抽象クラスにはなるべく実装メソッドはない方が良い?
タイトルの文面がどこで得た情報なのかが記憶が定かではないのですが、C#において、抽象クラスにはなるべく実装メソッドは書くべきではないと見聞きしたような覚えがあります。
しかし、上文の通り、どこで得た情報なのかが定かではなく、故に記憶違いの可能性もあり正しい知識なのか不安になったため、ここで質問させていただきます。
Webで調べてみても、解説しているコードの抽象クラス内に「抽象メソッド」と「実装されているメソッド」が混在しており、「タイトルの内容は間違いでは?」と半ば結論付けてはいるのですが、確信があるわけではありません。
参考までに、現在私が直面しているコードの内容を簡潔に一例として挙げさせていただきます。
【参考内容】
※実装されているメソッドを「実装メソッド」と呼称します。
- 抽象クラスHogeBaseクラス内に、抽象メソッドHogeCalc、実装メソッドHogeDrawがある
- HogeBaseクラスを基底クラスとし、複数の派生クラスを作成する。
- HogeManagerクラスは作成した各派生クラスのHogeDrawを呼ぶ。この時、派生クラスではHogeCalcを実装。その他の必要な初期化以外の記述は行わない。
- 派生クラス全てに共通した変数の初期化や計算、インスタンスの生成等はHogeBaseクラスで行う。
特に、この「派生クラス全てに共通した変数の初期化や計算、インスタンスの生成等はHogeBaseクラスで行う。」において、共通しているから基底クラスで実装しているものの「あくまで基底なんだからそこで初期化とか計算とか行うべきではない?」と考えてしまい、これがタイトルの内容につながっています。
長文になってしまい申し訳ありません。
何卒、正誤のご教授の方、よろしくお願いいたします。