Javaクラスでは、メソッドをとして定義してfinal
、このメソッドがオーバーライドされないようにすることができます。
public class Thingy {
public Thingy() { ... }
public int operationA() {...}
/** this method does @return That and is final. */
public final int getThat() { ...}
}
それは明らかであり、偶発的な上書きやパフォーマンスから保護するのに役立つかもしれませんが、それは私の質問ではありません。
私の質問は次のとおりです。OOPの観点から、メソッドを定義することによりfinal
、クラス設計者はこのメソッドが常に説明どおりまたは暗黙のうちに機能することを約束することを理解しました。しかし、メソッドが何をしているかが単にプロパティを提供するよりも複雑である場合、これは多くの場合、クラスの作成者の影響の外にある可能性があります。
構文上の制約は私には明らかですが、OOPの意味にはどのような意味がありますか?final
この意味で、ほとんどのクラス作成者は正しく使用していますか?
final
メソッドはどのような「契約」を約束しますか?