`
edr_
  • 浏览: 166500 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于Java继承

    博客分类:
  • J2SE
阅读更多
关于Java继承
前阵子无意间看见一篇博文写到:子类继承父类,子类对象创建的同时会创建一个父类对象。
顿时感觉在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();
	}
}


虚虚实实,需要学习的还有很多,欢迎指点拍砖砸人。

Have a nice day~
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics