2016-10-11 4 views
-1

クラスのインスタンスからメソッドが、カントはそれのための答えを見つけるようだが、私はこのようになります。その可能性は、インスタンスクラスのstructoreからメソッドをオーバーライドするかどうかを知りたい:オーバーライド私はmerly素朴な疑問を持っている

public class A : baseA  
{ 
    public virtual void methodA() 
    { 
    } 
} 

public class B : baseB  
{ 
    public void method B() 
    { 
     var ClassA = new A(); 
    } 

    /* Now Is there some sort of overide like */ 
    public override methodA() 
    { 
     //Do stuff 
    } 
} 

これらのクラスは互いに継承しないため、より難しくなります。 C#でこの種の構築が可能ならば?

+6

あなたは 'A'から継承しないので、どのようにそれを上書きすると思いますか? –

+0

これは可能ですが、フォームAを継承し、この場合は戻り値の型を保持する必要があります。コードで試してみましたか? –

+0

あなたが求めているのであれば、 'methodA()'だけを変数 'ClassA'に対してオーバーライドすることはできません。 –

答えて

4

いいえクラスの動作を継承しない場合は、その動作を上書きできません。

をオーバーライド修飾子はメソッド、プロパティ、インデクサ、またはイベントを継承の抽象または仮想実装を拡張または変更する必要があります。

クラスBは、そうするためにクラスAから継承する必要があります。

public class A 
{ 
    public virtual void methodA() 
    { 
    } 
} 

public class B : A 
{ 
    public void methodB() 
    { 
     var ClassA = new A(); 
    } 

    public override void methodA() 
    { 
     //Do stuff 
    } 
} 

詳細の確認MSDN

オーバーライドメソッドには、基本クラスから継承されたメンバーの新しい実装を提供します。オーバーライド宣言によってオーバーライドされるメソッドは、オーバーライドされた基本メソッドと呼ばれます。オーバーライドされた基本メソッドは、オーバーライドメソッドと同じシグネチャでなければなりません

+0

@Wojciech Szabowicz - これはあなたの質問に答えましたか?あなたが達成しようとしていることを説明すると、私たちは別の方法であなたを助けることができます –

+0

そして、それらのクラスは互いに難しくするために互いに継承しないので、基本的にあなたが書いたものは真ですが、戦略パターンを使用することについて。 –

+0

@WojciechSzabowicz - あなたが直面している実際の問題を理解することなく、実際には何のフィードバックも得られません... –

関連する問題