返回信息流新手,表述不怎么准确,打印super和this的地址(hashcode)
public class A {
public int num = 1;
}
public class B extends A{
public int num = 2;
public void test() {
System.out.println(super.hashCode());
System.out.println(this.hashCode());
}
}
public class Test {
public static void main(String[] args) {
A a = new A();
B b = new B();
b.test();
}
}
test输出:
621009875
621009875
这是一条镜像帖。来源:北邮人论坛 / java / #64826同步于 2020/12/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
super和this的地址是一样的吗
czt418022249
2020/12/23镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
你又没有重写hashcode,那最后都会调用object的hashcode方法,同一个对象的hashcode当然是一样的
【 在 czt418022249 的大作中提到: 】
: 新手,表述不怎么准确,打印super和this的地址(hashcode)
: public class A {
: public int num = 1;
: ............
我说个关键的吧,子类初始化之前父类会初始化,但是不创建父类对象,父类的属性还是放在子类的内存空间里。也就是说,你就算不用super,而是在父类里面用this.hashcode,得到的也是一样的值,因为这两个this都指向子类对象。然后super只是一个标志,不指向任何对象,它能调用父类构造器和方向,并不是说指向了父类对象,因为根本没有父类对象被创建。