超类中的方法声明

时间:2013-10-10 20:43:04

标签: java declaration superclass

我不想在名为'dataItem'的超类中进行方法声明,以便实现该方法的所有子类必须具有实现类的返回类型。这可能吗?

例如,如果我有'实验'类实现'dataItem'并且我有方法newItem()。哪个“实验”应该只能返回'Experiment'数据类型,而不能返回'dataItem'的任何其他实现。

2 个答案:

答案 0 :(得分:1)

您不能强制类方法返回它所属的类型。你必须实际指定它。

public class DataItem {
    public DataItem getItem() {return null;}
}

public class Experiment extends DataItem {
    @Override
    public Experiment getItem() {return null;}
}

这是有效的,因为ExperimentDataItem的子类,因此可以在DataItem可以使用的任何地方使用。

答案 1 :(得分:1)

我想你正在寻找这个:

public interface dataitem<T>
{
    public T newItem();
};

public class Element implements dataitem<Element>
{
    @Override
    public Element newItem()
    {
        return new Element();
    }
}