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
?他想声明为新的。“你有什么反对意见吗?”哈姆雷特;没有什么反对的。我明白了,我可能还没有回答老年退休金计划的确切问题。。。。谢谢你指出这一点!这不是我第一次或最后一次犯错误,所以…:/;)