在java中,当创建一个子类对象会不会创建父类对象???
什么意思呢???
看如下代码:
public class Animal
{
int num;
Animal(){
this.num = 10;
}
}
class Cat extends Animal
{
Cat(){
super();
}
}
Cat类是Animal的子类,当创建Cat对象的时候,会不会在内存中现创建Animal对象呢???
这个问题困扰了我好久,而且也一直被一些教材误导,教材上说,按照面向对象的思想,“没有爸爸,怎么会有儿子”,即 “没有父类怎么会有子类”。言外之意就是,说,创建子类对象时,先创建父类对象!!!然而真的是这样吗???
我为了求证这个问题,我翻遍了国内的百度,其中看到了一个很经典的回答。如果父类是一个抽象类的话,当创建子类,难道会先创建父类吗,那么这不是和java的语法规则相互矛盾了吗?
为了更好的求证,我去了国外的网站,并且看到了这个,如图:
看到图中的英文没???英语好的同学能看懂了吧,我就不解释了。
结论:
在Java中,当创建一个子类对象时,是不会先创建父类对象的。但是创建子类对象时,会去先调用父类的构造函数。
欢迎大家给我留言!!!