黑马程序员技术交流社区

标题: final的问题 [打印本页]

作者: 黑马张扬    时间: 2012-5-29 16:53
标题: final的问题
class Demo
{
        Demo()
        {
                System.out.println("hello");
        }
}

class FinalDemo
{
        final int x;
        final Demo f;
        FinalDemo(int i)
        {
                x = i;
                System.out.print(x);
        }
        FinalDemo(Demo f)
        {
                f = f;
        }

        public static void main(String[] args)
        {
                FinalDemo fd = new FinalDemo(5);
                FinalDemo fd1 = new FinalDemo(new Demo());
        }

}



我在构造方法里初始化了呀 这是啥原因!


作者: 丰亚彬    时间: 2012-5-29 17:10
构造函数必须把所有final类型的变量初始化,不能只初始化其中一个不然编译器会编译出错的
我把正确的代码给你
  1. class Demo
  2. {
  3.         Demo()
  4.         {
  5.                 System.out.println("hello");
  6.         }
  7. }

  8. class FinalDemo
  9. {
  10.         final int x;
  11.         final Demo f;
  12.         FinalDemo(int i)
  13.         {
  14.                 x = i;
  15.                 f = null;
  16.         }
  17.         FinalDemo(Demo f)
  18.         {
  19.                 this.f = f;
  20.                                 x = 0;
  21.         }

  22.         public static void main(String[] args)
  23.         {
  24.                 FinalDemo fd = new FinalDemo(5);
  25.                 FinalDemo fd1 = new FinalDemo(new Demo());
  26.         }

  27. }

复制代码
希望对你有帮助
作者: 黑马张健    时间: 2012-5-29 17:47
class FinalDemo
{
         final int x =0;                               //这里初始化
         final Demo f = new Demo();          //这里初始化
         FinalDemo(int i)
         {
                 x = i;
                 System.out.print(x);
         }
         FinalDemo(Demo f)
         {
                 f = f;
         }

        public static void main(String[] args)
         {
                 FinalDemo fd = new FinalDemo(5);
                 FinalDemo fd1 = new FinalDemo(new Demo());
         }

}

作者: 刘伯阳    时间: 2012-5-29 18:32
直到你的对象实例化出来  你的变量始终没有赋值。你将x = i;两个都是变量。对于f你可以先final Demo f = 0;
这样你的程序就能运行了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2