java继承中的this_java – 在继承中的混淆 – 在构造函数中打印时,“this”的值...

When I execute the program and print the value of “this”, in both super class constructor as well as in child class constructor, the value of this (address location)…

System.out.println(this)与默认Object#toString的输出不是内存中实例的地址.它只是类的名称和实例的哈希码,没有更多.从the documentation:

The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@’, and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

getClass().getName() + '@' + Integer.toHexString(hashCode())

This is typically implemented by converting the internal address of the object into an integer…

但它也说

…but this implementation technique is not required by the JavaTM programming language.

…当然,JVM可以根据需要自由地在内存中移动实例,但不允许更改hashCode.

…why dont I get the value of Test i.e, Test@someVal (Super class) when I print value of “this” in the super class.

有一个例子.该实例是子类.当您执行System.out.println(this)时,无论您是在基类还是子类中执行此操作,它仍然与您正在使用的对象实例相同.那个对象具有它从子类获得的特征,并且它还具有从超类继承的特征,但是没有两个单独的实例;有一个具有组合功能的实例.超级不是一个对象引用,虽然它看起来有点像一个;它是一种语法机制,专门要求编译器使用实例从超类继承的功能,而不是实例的等效功能(如果它们不同).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值