将继承的成员精炼到Java中的特定子类

时间:2016-06-14 20:59:40

标签: java inheritance

我有一个案例,我认为使用继承是有意义的,但我不确定如何最好地在Java中执行它。我知道你不能用Java覆盖一个成员,但是如果可以的话,我希望我的案例可以像这样工作:

public class Y {...}

public class Ytype1 extends Y {...}

public class X {
    public List<Y> ys;
    ...
}

public class Xtype1 extends X {
    public List<Ytype1> ys;
}

Xtype1是一种X,其中ys的所有成员都是Ytype1。我希望X中依赖于ys的任何方法能够使用Xtype1中的ys在Xtype1中运行,但我还想在Xtype1中实现依赖y中Y的所有Y为Ytype1的方法。

我已经考虑覆盖X中任何会添加到ys的方法,以便这些方法不适用于不是Ytype1的Y,但我宁愿避免不必要的类型转换。

有没有正确的方法呢?

1 个答案:

答案 0 :(得分:0)

听起来你正在寻找这个:

public class Y {...}

public class Ytype1 extends Y {...}

public class X<T extends Y> {
    public List<T> ys;
    ...
}

public class Xtype1 extends X<Ytype1> {
    // super.ys is now List<Ytype1>
}