gpt4 book ai didi

java - 为什么当通过 "super"和 "this"调用时 hashCode() 给出相同的结果?

转载 作者:行者123 更新时间:2023-12-01 17:55:23 29 4
gpt4 key购买 nike

我知道 super 是一个引用变量,用于引用直接父类对象。但我找到了 super 的哈希码和this相同,这意味着它们引用子对象。

那么,super怎么样?用于调用父类对象?

示例代码:

class Animal{
int a;
Animal(){
System.out.println("animal constructor ");
}
}

class Dog extends Animal{
int b;
Dog(){
System.out.println("dog constructyor ");
System.out.println(this.hashCode()+" "+super.hashCode());
System.out.println(this.getClass()+" "+super.getClass());
}
}
public class Super1{
public static void main(String[] args){

Dog d=new Dog();
System.out.println(d);


}
}

super 和 this 的类也是相同的。

最佳答案

I know that super is a reference variable which is used to refer immediate parent class object.

不,不是。它用于引用父类成员。不存在“父类对象”这样的东西。

But I find the hashcode of both super and this are same which means they refer to child object.

不,没有。

由于您没有在这两个类中重写 hashCode(),因此当您调用它时,无论使用哪个引用调用它,您都将始终得到相同的结果。

当您调用 super.getClass() 时,对象的类不会神奇地改变。

关于java - 为什么当通过 "super"和 "this"调用时 hashCode() 给出相同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45399392/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com