class Alpha
{
String name = "Alpha";
Alpha()
{
print();
}
void print()
{
System.out.println("Alpha Constructor");
}
}
class Beta extends Alpha
{
int i = 5;
String name = "Beta";
public static void main(String[] args)
{
Alpha a = new Beta();
a.print();//Line1 executes Beta constructor
System.out.println(a.name);//Line 2 displays Alpha instance variable
}
void print()
{
System.out.println(i);
}
}
该程序编译成功并显示以下输出。
0
5
Alpha
问题
a) 我不明白为什么 Alpha 的构造函数没有首先执行。
我相信“super()”将首先被每个子构造函数隐式调用......对吗?
b) 如果 Beta 的构造函数已经执行,那么为什么要打印“5”?(输出中的第二行)
我有点理解的第三行(即,将显示 Alpha 自己的变量,因为尚未对“a”实例变量进行强制转换)