Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 继承示例_Oop_C# 4.0_Inheritance - Fatal编程技术网

Oop 继承示例

Oop 继承示例,oop,c#-4.0,inheritance,Oop,C# 4.0,Inheritance,考虑以下代码段: class BaseClass { public void SayHi() { Console.WriteLine("Hi from base class"); } public virtual void SayHello() { Console.WriteLine("Hello from base class"); } } class DerivedClass : BaseClass {

考虑以下代码段:

  class BaseClass
{
    public void SayHi()
    {
        Console.WriteLine("Hi from base class");
    }

    public virtual void SayHello()
    {
        Console.WriteLine("Hello from base class");
    }
}

class DerivedClass : BaseClass
{
    public void SayHi()
    {
        Console.WriteLine("Hi from derived class");
    }

    public new void SayHello()
    {
        Console.WriteLine("Hello from derived class");
    }
}

 class Program
{
    static void Main(string[] args)
    {
        BaseClass _object = new DerivedClass();

        _object.SayHi();
        _object.SayHello();

        Console.ReadKey();
    }
}
上面的输出显示:

Hi from base class 
Hi from derived class

谁能给我解释一下这背后的原因吗。此外,如果我们在派生类中创建同名的方法,是否不需要重写基类的虚拟方法?

多态性的全部要点是,基类类型的对象可以设置为派生类的实例,但具有不同的行为[语义]。如果不是这样,那么您将永远无法将新的派生表单实例插入到
Winforms
框架中

哎呀,你的定义错了。虚拟方法用于启用多态性。使用
new
关键字也是错误的,应该使用
override
来定义
虚拟
方法的新行为


基类中的虚拟方法可以在基类中重写,因此即使变量类型为
BaseClass
,也会在该变量上调用被重写的虚拟方法。

输出错误。这应该是来自基类的
Hi
和来自基类的
Hello
?他想声明为新的。“你有什么反对意见吗?”哈姆雷特;没有什么反对的。我明白了,我可能还没有回答老年退休金计划的确切问题。。。。谢谢你指出这一点!这不是我第一次或最后一次犯错误,所以…:/;)