Ich verwende eine Bibliothek, in der eine abstrakte Klasse eine konkrete Methode aus Object
mit einer abstrakten Methode geerbt hat Vorrang:Warum kann eine abstrakte Klasse eine konkrete Methode außer Kraft setzen?
public abstract class A {
@Override
public abstract boolean equals(Object obj);
}
diese Klasse zu erweitern, ich habe die equals
Methode implementieren:
public class B extends A {
@Override
public boolean equals(Object obj) {
return obj != null && obj.getClass() == B.class;
}
}
Warum kann eine abstrakte Methode (A::equals
) eine konkrete Methode überschreiben (Object::equals
)? Ich sehe das Ziel nicht.
Es ist das Gegenteil hier - die Basisklasse hat eine abstrakte Methode und eine nicht abstrakte abgeleitete Klasse hat eine nicht abstrakte Methode, die die Basisklassenmethode außer Kraft setzt. – sharptooth
@sharptooth Meine Frage war nicht sehr klar. Ich spreche von 'A :: equals' überschreiben 'Object :: equals' – gontard
Ich denke, Sie sollten das explizit in der Frage erwähnen. Da du nur zwei deiner Klassen präsentiert hast, war ich sicher, dass es nur um sie ging. – sharptooth