2012-01-26 130 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。 (修改后的版本)

相关问题