У класі Java метод може бути визначений як такий final
, щоб відзначити, що цей метод не може бути замінений:
public class Thingy {
public Thingy() { ... }
public int operationA() {...}
/** this method does @return That and is final. */
public final int getThat() { ...}
}
Це зрозуміло, і це може бути корисно для захисту від випадкового переосмислення або, можливо, продуктивності - але це не моє питання.
Моє запитання: З точки зору ООП, я зрозумів, що, визначаючи метод, final
дизайнер класів обіцяє, що цей метод завжди працюватиме так, як описано чи мається на увазі. Але часто це може бути поза впливом автора класу, якщо те, що робиться методом, є складнішим, то просто надання властивості .
Синтаксичне обмеження для мене зрозуміле, але що таке значення в сенсі ООП? Чи final
правильно в цьому сенсі використовується більшість авторів класу?
Який «контракт» final
обіцяє метод?