[b][color=green][size=large]关于Java继承[/size][/color][/b]
前阵子无意间看见一篇博文写到:子类继承父类,子类对象创建的同时会创建一个父类对象。
顿时感觉在JVM中的对象就像天上的星星一样多,作为一门这么火爆的语言按理说不会如此设计(事实也是不会这样设计)。
之前看的书都说:子类创建对象的时候会默认调用父类的构造方法,但是并没有创建一个对象,创建一个对象需要有一个new的过程。想过通过对象的Hashcode来比较,但是hashcode一样不一定代表两者是同一个对象,因此并不足以证明。
因此我在Stackoverflow上搜索“子类创建对象的同时创建一个父类对象”(借用翻译然后再搜索)
其中的一个回答感觉还是比较能说得通的:
虚虚实实,需要学习的还有很多,欢迎指点拍砖砸人。
[size=medium][color=brown]Have a nice day~[/color][/size] :arrow:
前阵子无意间看见一篇博文写到:子类继承父类,子类对象创建的同时会创建一个父类对象。
顿时感觉在JVM中的对象就像天上的星星一样多,作为一门这么火爆的语言按理说不会如此设计(事实也是不会这样设计)。
之前看的书都说:子类创建对象的时候会默认调用父类的构造方法,但是并没有创建一个对象,创建一个对象需要有一个new的过程。想过通过对象的Hashcode来比较,但是hashcode一样不一定代表两者是同一个对象,因此并不足以证明。
因此我在Stackoverflow上搜索“子类创建对象的同时创建一个父类对象”(借用翻译然后再搜索)
其中的一个回答感觉还是比较能说得通的:
class A {
public static A super_var;
public A() {
super_var = this;
System.out.println("Constrcutor of A invoked");
}
}
class B extends A {
public static A sub_var;
public B() {
sub_var = this;
System.out.println("Constructor of B invoked");
}
public void confirm() {
if (sub_var == A.super_var)
System.out.println("There is only one object is created");
else
System.out.println("There are more than one object created");
}
}
public class InheritTest {
public static void main(String Args[]) {
B x = new B();
x.confirm();
}
}
虚虚实实,需要学习的还有很多,欢迎指点拍砖砸人。
[size=medium][color=brown]Have a nice day~[/color][/size] :arrow: