有効な Java (Joshua Bloch) Item 17 は次のように述べています。
「デザインとドキュメントまたは継承またはそれ以外の禁止」
ただし、Android API をざっと見てみると、ほとんどの API クラスが非最終的なものであることがわかります。継承についても文書化されていれば問題ありません (たとえば、View
of )。Activity
ただし、いくつかの非最終クラスもありますが、ドキュメントではこれらのクラスの継承については言及されていません。私の要点を説明するためのいくつかの任意の例:
- システム サービスを表すクラス (
WifiManager
、NotificationManager
...) - のようなユーティリティ クラス
UriMatcher
。 - のようないくつかのハードウェア固有のクラス
Camera
。
オープン性と拡張性は Android の哲学ですが、ここでは慣例が逆転していますか? つまり、すべての Android API クラスが (明示的に文書化されているかどうかにかかわらず) 継承されるように設計されていると想定できます。最終宣言されない限り?