В классе Java метод может быть определен как final
, чтобы отметить, что этот метод не может быть переопределен:
public class Thingy {
public Thingy() { ... }
public int operationA() {...}
/** this method does @return That and is final. */
public final int getThat() { ...}
}
Это ясно, и это может быть полезно для защиты от случайного переопределения или, может быть, производительности; но это не мой вопрос.
Мой вопрос: с точки зрения ООП я понял, что, определяя метод final
конструктор классов promises, этот метод всегда будет работать так, как описано или подразумевается. Но часто это может быть вне влияния автора класса, если то, что делает этот метод, более сложно, чем просто передать свойство.
Синтаксическое ограничение мне ясно, но каково значение смысла ООП? Является ли final
правильным в этом смысле большинством авторов классов?
Какой "контракт" выполняет метод final
?