2012-01-26 26 views
0

次の単純なコードでは、私はサブクラスで定義されているメソッド 'PrintMessage'にアクセスしようとしています。私はSuperClassのオブジェクトを作成し、これにSubClassのインスタンスを開始しました。なぜこれが間違っているのか理解したいですか?サブクラスのメソッドをスーパークラスのオブジェクトから呼び出す方法は?

コード実行時に次のエラーが発生します。

エラー '1' .SuperClass 'に' PrintMessage 'の定義がなく、' SuperClass 'タイプの最初の引数を受け入れる拡張メソッド' PrintMessage 'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか? )

class Program 
    { 
     static void Main(string[] args) 
     { 
      SuperClass objSuperClass = new SubClass(); 

      //The following statement gives me error 
      objSuperClass.PrintMessage(); 

     } 
    } 

    public abstract class SuperClass 
    { 

    } 

    public class SubClass : SuperClass 
    { 
     public void PrintMessage() 
     { 
      Console.WriteLine("Testing"); 
     } 

    } 
} 

答えて

0

「PrintMessage」の基本クラス定義または実装はありません。基本クラスに抽象/具象 "PrintMethod"を定義し、サブクラスでそれをオーバーライドします。あなたがしたい場合

乾杯、 シャラスはUが​​にobjSuperClassをキャストすることができますし、道

((SubClass)objSuperClass).PrintMessage(); 

を以下にサブクラスメソッドを呼び出すことができるようになります

0

thisを通過することができます。 (コードの変更版)

関連する問題