Io uso una biblioteca dove una classe astratta sostituisce un metodo concreto ereditato da Object
con un metodo astratto:Perché una classe astratta può forzare un metodo concreto per essere sovrascritto?
public abstract class A {
@Override
public abstract boolean equals(Object obj);
}
Per estendere questa classe, devo implementare il metodo equals
:
public class B extends A {
@Override
public boolean equals(Object obj) {
return obj != null && obj.getClass() == B.class;
}
}
Perché un metodo astratto (A::equals
) sovrascrive un metodo concreto (Object::equals
)? Non vedo l'obiettivo di questo.
È il contrario qui: la classe base ha un metodo astratto e una classe derivata non astratta ha un metodo non astratto che sovrascrive il metodo della classe base. – sharptooth
@sharptooth La mia domanda non era molto chiara. Sto parlando di 'A :: equals' che sovrascrive' Object :: equals' – gontard
Immagino che dovresti dirlo esplicitamente nella domanda. Dato che hai presentato solo due dei tuoi corsi, ero sicuro che la domanda riguardasse solo loro. – sharptooth