2011-01-26 14 views
5

抽象クラスではどのようなことをお勧めしますか?抽象メソッドまたは仮想メソッド?

仮想メソッドがnullを返すか、抽象メソッドを持っていますか?

抽象クラスを継承する必要はないため、nullを返すのが便利で簡単です。しかし、nullを返すことは、それが目的、エラー、または設計によるものであれば、やや難解です。

明確な推奨事項はありますか?

+2

もちろん、*何かが正しく記述されていないとわかりにくいです。 –

答えて

16

ヌルを返すことは、デフォルトの動作(サポートドキュメントを参照)として行うのが賢明で元気なこ​​とですが、おそらくvirtualは問題ありません。同様に、わかりやすいデフォルトを作成できますが、拡張性を提供したい場合:virtual

(コンクリート)クラスがデフォルト以外の実装なしでを機能できない場合は、abstractにしてください。ここのcasebookのシナリオはStreamです:いいえ実装なしバイトはどこから来ますか?(/へ)

2

派生クラスに機能を提供することを要求すると、私は抽象メソッドを持っています。そして、私が煩わされていなければ、nullを返す仮想メソッド(または何らかのデフォルトアクションを実行します)。

関連する問題