【问题标题】:Is member function virtual by default默认情况下成员函数是虚拟的
【发布时间】:2012-10-02 15:05:58
【问题描述】:

scala 中的成员函数默认是虚拟的吗?在这件事上它和 Java 有什么不同吗?

当一个方法被覆盖时,你必须明确声明,但没有“虚拟”。

【问题讨论】:

    标签: scala methods jvm overriding virtual


    【解决方案1】:

    scala默认成员函数是虚函数吗?

    是的。

    这件事和Java有什么不同吗?

    不,在 Java 中方法也是虚拟的,除非它们被明确定义为 final

    然而,Java 与 Scala 的不同之处在于 Java 不需要(或没有)override 关键字来覆盖方法 - 它确实有一个 @override 注释(从 Java 1.5 开始)并在出现时发出警告您覆盖了没有该注释的方法。

    【讨论】:

    • @lukas 是的。您可以使用final def methodName(...) = ... 定义最终方法。
    【解决方案2】:

    scala默认成员函数是虚函数吗?

    是的。

    这件事和Java有什么不同吗?

    没有。但是它不同于 C++ 或 C#。

    这是一个好主意还是坏主意是非常有争议的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-18
      • 2021-07-14
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多