一只倔强的蜗牛 2015-07-13 02:14 采纳率: 100%
浏览 1317
已采纳

类的初始化过程不懂,求大神解释

class Fu
{
Fu()
{
super();
show();
return;
}

void show()
{
    System.out.println("fu show");
}

}
class Zi extends Fu
{
int num = 8;
Zi()
{
super();
System.out.println("zi cons run...."+num);
return;
}
void show()
{
System.out.println("zi show..."+num);
}
}
class ExtendsDemo5
{
public static void main(String[] args)
{
Zi z = new Zi();
z.show();
}
}

图片说明

  • 写回答

4条回答 默认 最新

  • JonsonJiao 2015-07-13 02:56
    关注

    总的来说,你的子类复写了父类的方法,三个方面:
    1、子类初始化会先进行父类初始化,有没有super()都是一样的;
    2、子类复写父类方法,在实例化子类时,父类调用的show()其实调用的是子类的;
    3、num一开始为0,是因为子类加载时先进行变量的内存分配,num一开始就是0,然后调用完父类构造函数后会进行变量的初始化,num=8,然后再输出就是8了。

    可以看看这个解释http://coolshell.cn/articles/1106.html

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?