关于Java继承

[b][color=green][size=large]关于Java继承[/size][/color][/b]
前阵子无意间看见一篇博文写到:子类继承父类,子类对象创建的同时会创建一个父类对象。
顿时感觉在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:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值