2012-01-26 129 views
0

在下面的簡單代碼中,我試圖訪問SubClass中定義的方法'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」,並在子類中重寫相同的內容。

乾杯, 沙拉斯

如果你想
0

U可以投objSuperClass到​​,將能夠調用子類方法在下列方式

((SubClass)objSuperClass).PrintMessage(); 

,可以順利通過this。 (修改後的版本)

相關問題