2

前もって感謝します、

私の状況では、Vehicleという抽象クラスがあります。

private List<Tire> m_Tires;

リスト内のタイヤの数は派生クラスで決定され、互いに異なりますが、インスタンス化に必要なコードは同じであるため、コードの重複を避けてそのコードを配置することを強くお勧めします(抽象Vehicleクラスのコンストラクターでm_Tires )をインスタンス化します。

私は最初protected abstract void initializeTires();に、派生クラスに実装され、Vehicleのコンストラクターから呼び出されるように使用することを考えました。私はここでそれが悪いプログラミングとエラーを起こしやすいのを見ました。

簡単に言うと、ここでコードの重複を回避することは可能ですか、それとも私はそれと和解する必要がありますか?

4

3 に答える 3

4

コンストラクターを作成してprotectedチェーンすることができます。

于 2010-12-11T20:49:19.193 に答える
1

以下を作成するのはどうですか:

initializeTires(int numberOfTyres); 

基本クラスでこれを呼び出し、派生クラスで正しいパラメーターを指定します。

于 2010-12-11T20:52:11.173 に答える
1

@Oded とその例は

public abstract class MyAbstract {
   private List<Tire> m_Tires;

   protected MyAbstract(int count) {
      m_Tires = new List<Tire>(count);
   }
}

public class MyClass : MyAbstract {
   public MyClass(int count) : base(count) { }   
}
于 2010-12-11T20:53:17.333 に答える