我有以下代码,问题是将调用equals
函数?
答案是 - 对象类的equals
,有人可以解释原因吗?
我认为A类的equals
将被调用,因为在运行时a是A而A对A类有一个正确的equals
函数,因为b是A类的引用。
为什么我的假设是错的?
public class MainClass
{
public static void main(String[] args)
{
Object a = new A();
A b = new B();
System.out.println(a.equals(b));
}
}
public class A
{
public boolean equals (A other)
{
System.out.println("a");
return true;
}
}
public class B extends A
{
public boolean equals (Object other)
{
System.out.println("b");
return true;
}
public boolean equals (B other)
{
System.out.println("c");
return true;
}
}