c# - C# 中 override 和 virtual 的使用 vs. Java 方法覆盖

标签 c# java inheritance syntax

为什么我们需要显式定义一个方法为virtual,然后在C#中指定override来完成方法覆盖,而在Java中不使用这两个关键字就可以实现同样的事情。它有什么作用?

最佳答案

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

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

font

关于c# - C# 中 override 和 virtual 的使用 vs. Java 方法覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5347621/

相关文章:

c# - SearchBox 谷歌地图不工作 C# MVC 3

C#、WPF、在没有 backgroundworkers 的情况下更新 gui

ruby - 从父类(super class)调用子类方法 - 设计模式

c# - 应该如何以及在何处使用域对象方法?

c# - 使用 C# 代码在第 2 代 Azure 存储帐户之间复制大文件

java - 配置Log4J每天写入新文件新日志文件

java - 如何根据参数值在jsp文件中使用动态CSS

java - 在 Java 中压缩文件夹时出错 - 此文件包含未关闭的条目

Java 与 C# : Java and C# subclasses with method overrides output different results in same scenario

c++ - 数据类型 inst 转换正确吗?