public static void main(String[] args){
new Qdb();
}
}
其结果是:
Target=> 0
Target=> 30
Depend=> 20
哪位哥哥可以通俗的讲一下啊,这个具体的过程,特别是子类和 父类的成员变那部分作者: 宋蕈 时间: 2012-4-10 10:50
它的调用流程大概是:
当你调用子类的构造函数时,它会自动的调用父类的无参构造函数,
接受,你调用了print() 方法,这里明显是调用了 子类自己的print()方法, 因为,子类覆写了print()方法
然后,又是 执行到super.print()时,这个当然就是调用父类的print()方法了。 作者: 黑马老兵 时间: 2012-4-10 10:53
你这个程序也就是对子类对象进行初始化的过程。
1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;
2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;
3.其次,初始化父类的普通成员变量和代码块,在执行父类的构造方法;
4.最后,初始化子类的普通成员变量和代码块,在执行子类的构造方法;
最后,给你个例子吧。你运行着帮助理解。
class Super{
public static int a ;
private int b ;
static{
System.out.println("此时a的值为:" + a) ;
a = 10 ;
}
public Super(){
System.out.println("此时a的值为:" + a) ;
System.out.println("此时b的值为:" + b) ;
b = 20 ;
}
{
System.out.println("此时b的值为:" + b);
b = 30 ;
}
}
class Sub extends Super{
public static int aa ;
private int bb ;