W klasie Java można zdefiniować metodę jako final
, aby zaznaczyć, że ta metoda nie może zostać zastąpiona:
public class Thingy {
public Thingy() { ... }
public int operationA() {...}
/** this method does @return That and is final. */
public final int getThat() { ...}
}
To jasne i może być przydatne do ochrony przed przypadkowym zastąpieniem, a może występem - ale to nie jest moje pytanie.
Moje pytanie brzmi: Z punktu widzenia OOP zrozumiałem, że definiując metodę, final
projektant klasy obiecuje, że ta metoda będzie zawsze działać zgodnie z opisem lub sugestią. Ale często może to być poza wpływem autora klasy, jeśli to, co robi metoda, jest bardziej skomplikowane niż po prostu dostarczenie właściwości .
Ograniczenie składniowe jest dla mnie jasne, ale jaka jest implikacja w sensie OOP? Czy final
w tym sensie jest używane poprawnie przez większość autorów klasowych?
Jaki rodzaj „umowy” final
obiecuje metoda?