gpt4 book ai didi

java - 学习多态和equals类

转载 作者:行者123 更新时间:2023-11-30 06:23:00 25 4
gpt4 key购买 nike

我目前正在阅读有关多态性的内容,但对其中的内容感到有点困惑。我书中关于动态绑定(bind)的部分也让我很困惑,但我不确定要举什么例子,也许可以举一个简单的例子来描述动态绑定(bind)的工作原理?我所知道的是,当在某种类型上调用方法(?)时,它将调用实例所绑定(bind)的最具体的方法。

另外,当使用 equals 方法时,为什么用这样的方法覆盖 java 的 equals 方法是不好的做法:

public boolean equals(Circle circle){
return this.radius == circle.radius;
}

相对于

 public boolean equals(Object circle){
return this.radius == ((Circle)circle).radius;
}

抱歉,如果这有点困惑,我很难理解这些我认为至关重要的概念。提前致谢。

最佳答案

Object 类的equals 方法将Object 作为参数。所以这个方法

public boolean equals(Circle circle){

具有不同的签名,因此重载 equals 方法;它不会覆盖它。多态性的要点是,您可以让父类(super class)的对象引用(例如 Object)引用子类的实际对象(此处为 Circle),并且你可以在父类(super class)引用上调用一个方法,而不关心实际的类是什么,调用实际实例的类的方法。

你可以有这样一个重载方法,但如果你有一个 Object 引用,它就不会被调用,即使传入的参数真的是一个 Circle .

关于java - 学习多态和equals类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18667994/

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