gpt4 book ai didi

java - 使用各种重写方法调用对象方法

转载 作者:行者123 更新时间:2023-12-01 10:22:13 26 4
gpt4 key购买 nike

我遇到了这段代码:

public class AAA
{
protected int _num;
public AAA()
{
_num=2;
}
public boolean equals(Object other)
{
System.out.println("objectA");
return true;
}
}
public class BBB extends AAA
{
String st;
public BBB()
{
st="bbb";
}
public boolean equals(Object other)
{
System.out.println("objectB");
return true;
}
public boolean AAA(AAA other)
{
System.out.println("AAA");
return true;
}
public boolean BBB(BBB other)
{
System.out.println("BBB");
return true;
}
}
public class Driver15a
{
public static void main(String args[])
{
AAA ab=new BBB();
BBB b1=new BBB();
if(ab.equals(ab)) System.out.println(6);
}
}

我希望 ab 能够:

-使用 AAA 的 equals 方法。

-使用对象签名从 BBB 调用方法。

但是它调用带有 BBB 签名的方法,这对我来说很奇怪。

非常感谢您提供有关此代码实际运行方式的反馈,以了解方法调用。谢谢!

最佳答案

方法public boolean AAA(AAA)public Boolean BBB(BBB)与此无关。如果我将其减少到显示正在发生的情况所需的最少量代码:

public class AAA
{
public boolean equals(Object other)
{
System.out.println("objectA");
return true;
}
}

public class BBB extends AAA
{
public boolean equals(Object other)
{
System.out.println("objectB");
return true;
}
}

public static void main(String args[])
{
AAA ab=new BBB();
ab.equals(ab);
}

这是多态性的一个基本示例。 BBB.equals(Object) 会覆盖 AAA.equals(Object),因此当您调用 ab.equals(ab) 时,它会找到最重写版本,BBB.equals(Object)

关于java - 使用各种重写方法调用对象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35516090/

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