在Java类中,可以定义一个方法为final
,以标记该方法不可被覆盖:
public class Thingy {
public Thingy() { ... }
public int operationA() {...}
/** this method does @return That and is final. */
public final int getThat() { ...}
}
我理解,定义一个方法为final
,类的设计者承诺这个方法将永远按照描述或意图运行,这可能对于防止意外覆盖或提高性能有一定作用。但这不是我的问题。
我的问题是:从面向对象编程(OOP)的角度来看,如果该方法所做的事情比仅仅提供属性更加复杂,则往往超出了类作者的影响范围。
我清楚地了解到语法限制,但在OOP方面,这意味着什么?大多数类作者是否正确地使用final
?
final
方法承诺了什么样的“契约”?