我正在尝试创建一个设置,其中一组子类覆盖超类。这个超类包含一个抽象方法 - 理想情况下,其返回类型是调用该方法的对象的返回类型,这样它的有效行为如下:
public abstract class SuperClass{
public abstract SuperClass getSelf();
}
public class SubClass extends SuperClass{
@Override
public SubClass getSelf(){
return this;
}
}
我不确定这样的事情是否可能,因为我认为返回类型必须始终相同才能使覆盖起作用 - 然而我一直在思考答案,如果存在的话,就位于这条线上的某个地方......
public abstract class SuperClass{
public abstract <? extends SuperClass> getSelf();
}
public class SubClass extends SuperClass{
@Override
public SubClass getSelf(){
return this;
}
}
谢谢你的帮助。
编辑:添加将超类扩展到子类,呃
这将起作用:
public abstract class SuperClass{
public abstract SuperClass getSelf();
}
public class SubClass extends SuperClass{
@Override
public SubClass getSelf(){
return this;
}
}
注意我已经添加了extends SuperClass
给你的SubClass
定义。返回类型为getSelf
被称为协变返回类型 http://en.wikipedia.org/wiki/Covariant_return_type.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)