web-dev-qa-db-ja.com

SDKのデフォルトで、クラスとしてfinalを推奨するように設定できますか?

私はAndroidでSDKの開発に取り組んでいます。一般に、ユーザーはSDKのクラスを継承する必要がないため、問題はデフォルトでは、SDKのクラスのすべてのクラスが最終版ですか?

3
Tlaloc-ES

一般に、クラスを継承可能に設計するのでない限り、finalをマークすることをお勧めします。

理由は次のとおりです。クラスがどのように使用されるかを予測することはできません。継承を許可すると、クライアントは予期しない方法でそれらを使用する(またはそれらを壊す)可能性があります。継承されるクラスを特別に設計しないと、クラスを更新するときにコードが壊れる可能性があります。

クラスの封印を解除すると、そのクラスを継承する誰かがクラスの内部にアクセスできるようになります。事実上、これらの内部はパブリックAPIの一部になります。したがって、APIサーフェスを制御する場合、クラスはfinalでなければなりません。

Eric Lippertが件名の詳細な処理を提供します here

8
Robert Harvey