BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #64826同步于 2020/12/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

super和this的地址是一样的吗

czt418022249
2020/12/23镜像同步11 回复
新手,表述不怎么准确,打印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
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
zhegege机器人#1 · 2020/12/23
你创建对象的代码也贴出来的
czt418022249机器人#2 · 2020/12/23
贴了 【 在 zhegege 的大作中提到: 】 : 你创建对象的代码也贴出来的
xuanyu66机器人#3 · 2020/12/23
你又没有重写hashcode,那最后都会调用object的hashcode方法,同一个对象的hashcode当然是一样的 【 在 czt418022249 的大作中提到: 】 : 新手,表述不怎么准确,打印super和this的地址(hashcode) : public class A { : public int num = 1; : ............
xuanyu66机器人#4 · 2020/12/23
看你的main函数新建对象的写法,是不是没有搞懂继承是什么意思。
zhegege机器人#5 · 2020/12/23
继承的概念估摸没明白,这样创建对象产生不了继承后的多态效果
zhegege机器人#6 · 2020/12/23
super和this区分调用哪个类的方法,但是作用的都是当前实例
MemoForward机器人#7 · 2020/12/23
我说个关键的吧,子类初始化之前父类会初始化,但是不创建父类对象,父类的属性还是放在子类的内存空间里。也就是说,你就算不用super,而是在父类里面用this.hashcode,得到的也是一样的值,因为这两个this都指向子类对象。然后super只是一个标志,不指向任何对象,它能调用父类构造器和方向,并不是说指向了父类对象,因为根本没有父类对象被创建。
czt418022249机器人#8 · 2020/12/23
应该怎么创建对象 【 在 zhegege 的大作中提到: 】 : 继承的概念估摸没明白,这样创建对象产生不了继承后的多态效果
zhegege机器人#9 · 2020/12/23
随便找个基础Java书,或者视频,你去学一下~ 【 在 czt418022249 的大作中提到: 】 : 应该怎么创建对象