用于虚函数定义:
虚拟函数或虚拟方法是一种功能或方法,其行为可以在继承类中被具有相同签名的函数覆盖。这个概念是面向对象编程(OOP)的多态性部分中非常重要的一部分。
在C#中,您应该将方法声明为virtual以便被覆盖,如MSDN中所示:
- C#语言规范 虚拟关键字
- C#虚拟
由于该
M方法不是虚拟的,因此
b.M()即使
b变量实际上是一个
D实例,它也将执行。
在Java中,每个非静态方法默认情况下都是虚拟的,因此,当您覆盖某个方法(甚至没有
@Override注释)时,的行为
b.M()将是
d.M()继承该
c.M()方法行为的。
我如何像C#一样更改Java代码以打印出BCC?我的意思是,我怎么教Java调用它使用的完全引用的方法?
您根本无法在Java中做到这一点。该
M在方法
C类将重写
M的方法
B。将
final修饰符添加到
B#M只会使该修饰符
C或其他
B子项无法覆盖该
M()方法。
如何更改C#代码以打印出CCC?我的意思是,我该如何教导C#调用重写方法?
将类中的
M方法更改
B为
virtual并在类中重写它
C:
class B : A{ public virtual void M() { Console.WriteLine("B"); }}class C : B{ public override void M() // I need to use public new void M() to avoid the warning { Console.WriteLine("C"); }}


