Ich bin sehr überrascht, warum Ausgabe ist sehr unterschiedlich von dem, was ich erwarte, habe ich zwei überladene Methoden, eine mit einer Zeichenfolge und die andere ein Objekt als Parameter, beim Aufrufen dieser Methode mit NULL-Parameter, Ausgabe druckt nur "String"
und keine Methode mit Objekt als Parameter aufrufen.Unerwartete überladene Methode Compiler Auswahl mit Null-Parameter
Warum wählt Java die Methode mit String als Parameter aus? Wie bestimmt Java, welche überladene Methode aufgerufen werden soll?
class TestingClass {
public void test(String s) {
System.out.println("String");
}
public void test(Object o) {
System.out.println("Object");
}
public static void main(String[] args) {
TestingClass q = new TestingClass();
q.test(null);
}
}
Wiederholen Sie es nach mir. Das Überschreiben geschieht nur in abgeleiteten Klassen und auch nur dann, wenn die Methodenparameter gleich sind. Der Rückgabetyp darf kovariant sein. – Madhusudhan
Ein ausführlicherer Text erklärt, was Eran gesagt hat. [Nach Denis Antwort suchen] (http://stackoverflow.com/questions/1572322/overloaded-method-selection-based-on-the-parameters-real-type) –