Ich habe den folgenden Code:Java-2-Funktionen mit übergeordneter Klasse und Unterklasse Unterschriften - wählen Super trotz dieser Art der Unterklasse Unterklasse ist
public class Main {
public boolean equals(String other){
return other == new Object();
}
public boolean equals(Object other){
return other == new Object();
}
public static void main(String[] args){
String s = "";
Object b1 = new Main();
System.out.println(b1.equals(s));
}
}
Soweit ich weiß die equals
Methodenauswahl auf diese Weise funktionieren soll: Während Kompilierung wird die Signatur ausgewählt, und da s
ist der Kompilierung-Typ (zB type
) sollte die Methode mit dem Parameter String
ausgewählt werden, und da b1
eine Instanz von Main
ist, dann werden wir unsere Main
Umsetzung equals
eher betreten als Object
's.
Beim Debuggen sehe ich jedoch, dass ich die Main
Implementierung mit dem Parameter des Typs Object
eingeben.
sah ich diese 2 Artikel:
Overloaded method selection based on the parameter's real type - meinen Fall nicht erklären, aber einen Fall, in dem die Art der s
würde Objekt gewesen sein.
https://stackoverflow.com/a/8356435/4345843 - diese Antwort, wenn sie wahr ist, soweit ich verstehe, unterstützt meine Theorie.
Würde mich freuen für Erklärungen.