超类和子类中几乎相同的方法发生冲突。为什么?

user8225639:
public class TestClass {

    private class Parent {

        public Object returnSomething() {
            return new Object();
        }

    }

    private class Child extends Parent {

        public String returnIt() {
            return (String) super.returnSomething();
        }
    }

    private class GrandChild extends Child {

        public StringBuilder returnIt() {
            return (StringBuilder) super.returnSomething();
        }
    }

}

我的IDE抱怨子级方法与子级方法冲突。返回值类型的方法定义不同,因此我看不到它们如何冲突。

有人可以帮助我了解Java在这里不允许的内容吗?

Code_Mode:

在Java中,除非重写方法是协变返回类型,否则无法使用不同的返回类型进行方法重写。

StringBuilder不是String此类的子类,因此编译器不允许覆盖该方法returnIt()

public final class StringBuilder extends AbstractStringBuilder
implements java.io.Serializable, Comparable<StringBuilder>, CharSequence

因此,如果您更改returnIt()in的返回类型Child,它将起作用,

private class Child extends Parent {

        public CharSequence returnIt() {
            return (String) super.returnSomething();
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么从子类的超类调用方法中获得“ this”?

为什么父类和子类都实现相同的接口?

在onPause,onStop和onDestroy方法中调用超类方法的正确顺序是什么?为什么?

为什么Eclipse Maven会说相同版本的依赖项发生冲突?

C ++为什么当名称空间出现时,结构/类不会与变量和函数发生冲突?

Swift-具有目标C选择器'*'的方法'*()'与具有相同Objective-C选择器的超类'NSObject'中的'*'的吸气剂发生冲突

在EntityState上发生冲突。已修改,因为相同模型类的两个对象?

为什么我的超类调用我的子类方法?

为什么Django告诉我,当某个字段仅存在于子类中时,该字段与基类中的字段发生冲突?

在Laravel和Slider Revolution中与变量“ title”发生冲突

为什么我会发生冲突?

Git-为什么我会在开发分支和主分支之间发生冲突

为什么在Java内存模型中两次写入同一变量会发生冲突?

为什么动态方法分派和超类变量可以引用子类对象?

与Mootools Accordian和Jquery发生冲突

Indy Server和AdoQuery发生冲突

ScrollView和GridView发生冲突

为什么我的超类在Swift中调用子类的方法而不是它的方法?

在类型类实现中定义变量时发生冲突

子类和超类方法

为什么此超类在初始化期间不在子类中运行方法?

Swift-具有Objective-C选择器'*'的方法'*()'与具有相同Objective-C选择器的超类'UIView'中的'*'的getter发生冲突

为什么在OO编程中用于强制转换对象的实例在变量中实例化超类和子类?

对于相同的对象,Java哈希码在一种情况下发生冲突,而在另一种情况下则发生冲突,为什么?(下面的代码)

当对象是子类类型时,为什么我不能从超类调用子类中的公共方法?

为什么我们不能使用超类的引用变量来访问其子类的方法(超类中没有的方法)?

为什么代码执行超类'方法而不是子类'?

为什么这些路线会发生冲突?

为什么这些 impl 会发生冲突?