在C#与Java方法覆盖中使用override和virtual

use*_*079 4 c# java syntax inheritance

为什么我们需要将方法显式定义为虚拟,然后在C#中指定override以完成方法重写,而在Java中不使用这两个关键字时实现相同的操作.它有什么用途?

blu*_*oot 6

在java中,没有必要添加任何关键字来覆盖方法.但有些规则适用:

  • 方法覆盖不能被声明为超类方法更私有.
  • 在重写方法中声明的任何异常必须与超类或该类型的子类抛出的异常类型相同.
  • 声明为final的方法不能被覆盖.
  • 可以将覆盖方法声明为final,因为关键字final仅表示此方法无法进一步覆盖.
  • 声明为private的方法无法覆盖,因为它们在类外部不可见.

字形