黑马程序员技术交流社区
标题:
继承中的问题
[打印本页]
作者:
唐兴旺
时间:
2012-3-1 00:41
标题:
继承中的问题
class A{
public A(){
this.fun();
}
public void fun(){
System.out.println("!!!!");
}
}
class B extends A{
private int x=100;
public B(int x){
this.x=x;
}
public void fun(){
System.out.println(this.str);
}
}
public class SuperDemo {
public static void main(String args[]){
new B(20);
}
}
因为子类的实例必须找到父类的无参构造作为出口,但是现在其父类又调用其自身的方法不能执行完就
子类就无法初始化,所以输出结果为 0 。但是在讲子类中的参数x定义为静态之后
private static int x=100;
为什么跳过父类直接执行子类的方法,这和子类实例化要先找到父类的构造方法是不是又矛盾呢?
作者:
李晓俊老师
时间:
2012-3-1 00:47
静态成员在内存中是单独存在的,它和对象的初始化是分别独立完成的,
对象的属性在堆内存中初始化,而静态成员在方法区中初始化,
更重要的是静态成员是随着类的加载而加载,跟对象有没有初始化无关,它一般是先于
对象的初始化完成的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2