używam biblioteki gdzie klasa abstrakcyjna zasłania konkretną metodę odziedziczoną Object
z abstrakcyjnej metody:Dlaczego klasa abstrakcyjna może wymusić zastąpienie konkretnej metody?
public abstract class A {
@Override
public abstract boolean equals(Object obj);
}
przedłużyć tę klasę, trzeba zaimplementować metodę equals
:
public class B extends A {
@Override
public boolean equals(Object obj) {
return obj != null && obj.getClass() == B.class;
}
}
Dlaczego metoda abstrakcyjna (A::equals
) zastępuje konkretną metodę (Object::equals
)? Nie widzę tego celu.
Jest odwrotnie - klasa bazowa ma metodę abstrakcyjną, a klasa pochodna nie abstrakcyjna ma nie abstrakcyjną metodę, która zastępuje metodę klasy podstawowej. – sharptooth
@sharptooth Moje pytanie nie było zbyt jasne. Mówię o 'A :: equals' overriding' Object :: equals' – gontard
Sądzę, że powinieneś wyraźnie to wyrazić w pytaniu. Ponieważ przedstawiłeś tylko dwie swoje klasy, byłem pewien, że pytanie dotyczyło tylko ich. – sharptooth