我理解这段代码,打印出来: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); }
}
有人可以解释一下这个例子中的初始化是什么吗?
答案 0 :(得分:0)
这里i
类B
是类变量,它在执行构造函数上初始化(我已经分配了变量int memory并初始化了默认数据)。
任何最终变量都可以在以下选项中初始化。
声明变量final int i=4;
所以在这里执行构造函数后,内存被分配并初始化为赋值。验证这一点。
B(){ 打印(); } 这将显示:4,因为它用最终值初始化。
我们可以在构造函数中初始化最终值,如下所示
final int i; B(){ I = 4; }