Java的。方法覆盖和缩小返回类型

时间:2017-02-20 06:34:36

标签: java methods types override covariant

好的,所以我是java的新手,所以这可能是一个愚蠢的问题。在我的超类中有一个方法,它接受一个通用的Object并返回一个Object。在我的子类中,我试图覆盖/缩小方法以返回我在其他地方定义的抽象类。基本上所有这个覆盖需要做的是预先形成相同的方法,但用较窄的类替换Object。我该怎么做呢?它应该只是一行或两行代码,但我不知道它的语法。

所以在SuperClass Foo中有一种方法,如:

public abstract class Foo {
    public Object doSomething() {
        Object objVar;  
        //does stuff to objVar
        return objVar;
    }
}

然后是diff java文件中对象的构造函数:

public abstract class Zee {
     //constructors & methods for zee
}

然后在子类中:

public class Subbie extends Foo { 
     @Override
     public Zee doSomething() { //covariant return type?? maybe?  


     return //needs to preform the same actions 
            //as the super doSomething method, but with 
            //the narrower return type.
     }  
} 

1 个答案:

答案 0 :(得分:0)

  1. 要查看缩小返回类型的语法,请参阅:Can overridden methods differ in return type?(基本上您正在执行此操作)

  2. 要从父类调用方法,请使用super.doSomething()

  3. 您无法实例化抽象类的对象。你应该扩展它并返回扩展类的对象