使用各种覆盖方法调用对象方法
object method calling with various overriding methods
我运行进入这段代码:
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);
}
}
我希望能够:
-使用AAA等于法。
-使用对象签名从 BBB 调用方法。
但是它调用了带有 BBB 签名的方法,这对我来说是 st运行ge。
非常感谢您就此代码的实际运行方式提供反馈以了解方法调用。
谢谢!
方法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)
.
我运行进入这段代码:
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);
}
}
我希望能够:
-使用AAA等于法。
-使用对象签名从 BBB 调用方法。
但是它调用了带有 BBB 签名的方法,这对我来说是 st运行ge。
非常感谢您就此代码的实际运行方式提供反馈以了解方法调用。 谢谢!
方法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)
.