Überschreibende Java-Methode mit mehreren Optionen auswählen

Zur Verdeutlichung- Nach meinem Verständnis sind die folgenden Methoden alle override vonObject.equals. Sind sieÜberlastun stattdessen und ich verstehe das nicht richtig?

Ich führe diesen Code aus:

public class AA
{
    private int _val=0;
    public AA()
    {
    _val=5;
    }
}


public class BB extends AA
{
    public BB()
        {
            ....
        }
    public boolean equals(BB ob)
        {
           return false;
        }
    public boolean equals(Object ob)
        {
            return true;
        }
    public boolean equals(AA ob)
        {
            return true;
        }

public static void main(String args[])
    {
        AA a2=new BB();
        BB b1=new BB();
        if((a2.equals(b1)))
        System.out.println("hi");

    }
}

Class AA hat keinequalsMethod

Ich versuche herauszufinden, mit welcher zweiten Methode ausgelöst wird und nicht mit welcher ersten. Mein Verständnis ist:

Seit Klasse AA gibt es keinequals -Methode, ich nehme an, dass der Compiler zur Kompilierungszeit das @ ausführen möchequals vonObject Klasse.Zur Laufzeit findet der Compiler heraus, dass a2 tatsächlich ein BB-Objekt ist und daher @ haequals Methoden, die die Methode von @ überschreibObject.

Was mir jedoch nicht klar ist, ist, warum die zweite Methode(Object ob) wird anstelle des ersten @ gewäh(BB ob), wenn das gesendete Objekt definiert ist und tatsächlich ein BB-Objekt ist.

Würde mich über Ihr Feedback freuen!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage