使用各种覆盖方法调用对象方法

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).