为什么我们需要显式定义一个方法为virtual,然后在C#中指定override来完成方法覆盖,而在Java中不使用这两个关键字就可以实现同样的事情。它有什么作用?
最佳答案
在 java 中,不需要添加任何关键字来覆盖方法。但有些规则适用:
- 重写的方法不能声明为比父类(super class)方法更私有(private)。
- 在覆盖方法中声明的任何异常必须与父类(super class)或该类型的子类抛出的异常类型相同。
- 不能覆盖声明为 final 的方法。
- 重写方法可以声明为 final,因为关键字 final 仅表示此方法不能被进一步重写。
- 不能覆盖声明为私有(private)的方法,因为它们在类外不可见。
关于c# - C# 中 override 和 virtual 的使用 vs. Java 方法覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5347621/