如何从超类对象调用子类方法?

时间:2012-01-26 13:06:17

标签: c#-3.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");
        }

    }
}

2 个答案:

答案 0 :(得分:0)

您没有任何基类定义或“PrintMessage”的实现。在基类中定义一个抽象/具体的“PrintMethod”,并在子类中重写它。

干杯, 沙拉斯

答案 1 :(得分:0)

你可以将objSuperClass转换为SubClass,并且能够以下列方式调用子类方法

((SubClass)objSuperClass).PrintMessage();

如果您愿意,可以浏览this 。 (代码的修改版本)