Em uma classe Java, um método pode ser definido para ser final
, para marcar que esse método não pode ser substituído:
public class Thingy {
public Thingy() { ... }
public int operationA() {...}
/** this method does @return That and is final. */
public final int getThat() { ...}
}
Isso é claro e pode ser útil para proteger contra a substituição acidental ou talvez o desempenho - mas essa não é a minha pergunta.
Minha pergunta é: Do ponto de vista do POO, entendi que, ao definir um método, final
o designer da classe promete que esse método sempre funcionará como descrito ou implícito. Mas muitas vezes isso pode estar fora da influência do autor da classe, se o que o método está fazendo é mais complicado do que apenas entregar uma propriedade .
A restrição sintática é clara para mim, mas qual é a implicação no sentido de POO? É final
usado corretamente nesse sentido pela maioria dos autores de classe?
Que tipo de "contrato" final
promete um método?