抽象クラスには、少なくとも1つの抽象的なメソッドが必要ですか?
-
21-09-2019 - |
質問
抽象クラスが少なくとも1つの抽象的な方法を持つ必要がありますか?
解決
この投稿の主題と体は2つの異なる質問をします。
- 少なくとも1人の抽象メンバーが必要ですか?
- 少なくとも1人の抽象メンバーが必要ですか?
#2への答えは間違いなくいいえです。
#1への答えは主観的でスタイルの問題です。個人的にはイエスと言うでしょう。あなたの意図がクラス(抽象的な方法なし)がインスタンス化されるのを防ぐことである場合、これを処理する最良の方法は private
protected
マークすることによってではなく、コンストラクター abstract
.
他のヒント
いいえ、それは必要ありません。これはよく戻ってきます 「テンプレートメソッド」 のようなデザインパターン HttpServlet
, 、各メソッドには既にデフォルトの動作が定義されており、その代わりに1つ(またはそれ以上)のみを無効にすることができます 全て そのうちの。
JDK 1.0では、抽象クラスに少なくとも1つの抽象的なメソッドを持つ必要がありました。この制限はJDK 1.1(1997?(私は古い))で削除され、そのようなクラスはJavaライブラリに追加されました。 java.awt.event.KeyAdapter
.
C ++では、サブクラスを必要とするために少なくとも1つの純粋な仮想関数と、クラスにRTTIを追加するために少なくとも1つの仮想関数が必要です。通常、デストラクタを使用することは理にかなっています。
注意してください。非アブストラクトメソッドを使用して、使用してください @Override
良い考えです。それは、読者にコードが何をしようとしているかについての重要な情報を伝えるだけでなく、タイプミスまたは誤ったパラメータータイプがオーバーライドを防止する一般的なエラーを見つけます。
いいえ - 抽象的なメソッドを持たずにクラスの要約を宣言できます。そのクラスのインスタンスが存在するために概念的に意味をなさない場合もあれば、そのクラスのサブクラスのみがインスタンス化できるようにすることもできます(何らかの理由で)
クラスがある場合 abstract
その宣言の修飾子はそれになります abstract
クラス。