【问题标题】:Method overriding: same argument list types (or COMPATIBLE types)?方法覆盖:相同的参数列表类型(或兼容类型)?
【发布时间】:2013-10-29 13:38:53
【问题描述】:

在我用来准备新的 Oracle Certified Professional - Java SE7 Programmer 考试的书中,在处理方法覆盖的部分中,我遇到了以下内容:

覆盖方法应该具有相同的参数列表类型或 兼容类型)作为基础版本。

“兼容类型”是什么意思?我的意思是,只要参数列表类型不同,您就会重载,而不是覆盖。

我只能考虑用一个采用相同类型的数组的方法来覆盖采用可变参数的方法。编译器发出警告,但仍然编译。

兼容类型是什么意思?这是书上的错误吗?

【问题讨论】:

  • 他们的意思是 sub/super 原始类型的类吗?
  • 可能是(int a ,String b)(String b, int a)之间的区别

标签: java overriding open-closed-principle


【解决方案1】:

也许它与类型擦除有关。这是有效的 Java,它只是给你一个警告:

abstract class Foo {
    public abstract void method(List<String> xs);
}

class Bar extends Foo {
    @Override
    public void method(List xs) {
    }
}

原始类型ListList&lt;String&gt; 兼容。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-26
  • 2014-04-18
  • 2011-03-09
  • 2015-05-22
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
相关资源
最近更新 更多