抽象基本クラスを作成しています。基本的にすべてのクラスで同じことをするコンストラクタを継承するすべてのクラスを継承します。これは可能ですか?あなたの派生クラスのコンストラクタでサブクラスからコンストラクタを継承する方法
1
A
答えて
0
、あなたがそうのようなあなたの基本コンストラクタを呼び出す必要があります:
base(param1,param2,...)
を明示的にベースのコンストラクタを呼び出していない場合は、ベースクラスのデフォルトコンストラクタがあれば、呼び出されます1つ存在する。そうでない場合は、コンパイルエラーが発生します。
2
保護されたあなたのコンストラクタを実行すると、抽象基底クラスは、デフォルトコンストラクタ(パラメータなしですなわちコンストラクタを)持っている場合、それは自動的にいない限り、派生クラスのコンストラクタによって呼び出されます
public abstract class A
{
protected A(string v) { V = v; }
public string V { get; protected set; }
}
public class AA : A
{
public AA(string v) : base (v) {}
}
2
ものを行います明示的に基本クラスの別のコンストラクタを呼び出します。
abstract class B
{
protected B()
{
...
}
protected B(object foo)
{
...
}
}
class D : B
{
public D()
: base() // not actually necessary, since it's called implicitly
{
}
public D(object foo)
: base(foo)
{
}
}
+0
基本クラスにデフォルトのコンストラクタがない場合は、派生クラスの要件を満たす答えを返すことができます –
関連する問題
- 1. 継承をサブクラスでマップする方法
- 2. サブクラスのデフォルトのコンストラクタ引数値(親クラスから継承)
- 3. 内部クラスを継承するサブクラスのコンストラクタを定義する方法は?
- 4. UserControl抽象サブクラスから継承する
- 5. サブクラスはコンストラクタを継承できますか?
- 6. C++の継承コンストラクタを書く方法
- 7. Java継承/コンストラクタ
- 8. Delphiのサブクラス継承
- 9. PHPサブクラスにプロパティ(継承とインスタンスの両方)を継承させる方法はありますか?
- 10. Hibernate/NHibernate:スーパークラスのインスタンスとしてサブクラスを継承する方法
- 11. 抽象クラスを継承するコンストラクタをjavadocする方法
- 12. のJava:継承コンストラクタ
- 13. DbContextクラスから継承する方法
- 14. Deviseコントローラから継承する方法
- 15. baseComponentから継承する方法Angular2?
- 16. 直接親ではない基底クラスからコンストラクタを継承する方法
- 17. Java継承、各サブクラスをループする
- 18. Doctrine2 - 継承マッピング、サブクラスのクエリ
- 19. コンストラクタを継承しますか?
- 20. Autofac RegisterTypeコンストラクタのパラメータ型から継承するコンストラクタを使用する場合
- 21. 共通サブクラスから初期化するPython多重継承
- 22. スカラーの親クラスからコンストラクタを継承する
- 23. C++のプライベートテンプレートクラスからコンストラクタを継承する
- 24. ctypes.Structureから継承したクラスのサブクラスを渡す
- 25. クラスを継承し、親コンストラクタを呼び出す方法は?
- 26. コンストラクタと継承を移動する
- 27. コンストラクタをプライベート継承で公開する
- 28. Ninjectでコンストラクタを継承する
- 29. javaでコンストラクタを継承する
- 30. Subclassコンストラクタは、スーパークラスコンストラクタから変数を継承しますか?
私はOPが同じシグネチャでコンストラクタを実装しないようにしたいと考えています。 C#でコンストラクタを継承することはできません。 (あなたのコードのように)ベースからの呼び出しのみ –
個人的には、これはC#の最大の失敗の1つだと思います。基本クラスで宣言されたすべてのパブリックメソッドは、派生クラスで自動的に使用できますが、すべてのコンストラクタを明示的に定義する必要があります。基本的な実装を単に呼び出す同じコンストラクタを書く必要があるたびに、C#チームを呪います。 – adelphus