【问题标题】:Primitive and Wrapper return types java [duplicate]原始和包装器返回类型java [重复]
【发布时间】:2018-09-12 17:21:06
【问题描述】:

为什么Java不允许重写方法如下?

class Test1{
    Integer test(){
        return 5;
    }
}
class Test2 extends Test1{
    int test(){
        return 4;
    }
}

它产生 int 与整数不兼容的错误?

【问题讨论】:

  • 那么它是如何覆盖的呢? ;)
  • int 和 Integer 不一样,看看你的test方法的返回类型应该就清楚了

标签: java


【解决方案1】:

你真的应该尝试谷歌搜索 overriding methods return type here

是的,它可能会有所不同,但它们有一些限制。在 Java 5.0 之前,当你重写一个方法时,参数和返回类型必须完全匹配。在 Java 5.0 中,它引入了一种称为协变返回类型的新工具。您可以覆盖具有相同签名的方法,但返回返回对象的子类。

所以int 是原始的,Integer 是包装类,它们之间没有关系

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 2012-04-03
    • 2018-06-26
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多