Java中的最终变量初始化

时间:2016-12-05 10:31:34

标签: java inheritance initialization

我理解这段代码,打印出来:0,4:

class A{
   A() {  print();   }
   void print() { System.out.println("A"); }
}
class B extends A{
   int i =   4;
   public static void main(String[] args){
      A a = new B();
      a.print();
   }
   void print() { System.out.println(i); }
}

我不明白int = 4是否更改为final int = 4为什么会打印4,4?为什么最终会在之前初始化?

class A{
   A() {  print();   }
   void print() { System.out.println("A"); }
}
class B extends A{
  final int i =   4;
   public static void main(String[] args){
      A a = new B();
      a.print();
   }
   void print() { System.out.println(i); }
}

有人可以解释一下这个例子中的初始化是什么吗?

1 个答案:

答案 0 :(得分:0)

这里iB是类变量,它在执行构造函数上初始化(我已经分配了变量int memory并初始化了默认数据)。

任何最终变量都可以在以下选项中初始化。

  • 声明变量final int i=4; 所以在这里执行构造函数后,内存被分配并初始化为赋值。验证这一点。

    B(){  打印(); } 这将显示:4,因为它用最终值初始化。

  • 我们可以在构造函数中初始化最终值,如下所示

    final int i; B(){ I = 4; }