Inheritance 抽象类的继承

Inheritance 抽象类的继承,inheritance,diagram,Inheritance,Diagram,在下图中,AbstractPainter是一个抽象类,它实现了ipainerContemporaryPainter和PastPainter是扩展AbstractPainter的类。考虑到这一点,是否要扩展ipainer?或者它们只是扩展了AbstractPainter 谢谢 在Java中,正确的思考方法是扩展抽象类并实现接口 例如,一个LinkedList实现了List接口和AbstractSequentialList,在Java中,正确的考虑方法是扩展抽象类并实现接口 例如,LinkedLis

在下图中,
AbstractPainter
是一个抽象类,它实现了
ipainer
ContemporaryPainter
PastPainter
是扩展
AbstractPainter
的类。考虑到这一点,是否要扩展
ipainer
?或者它们只是扩展了AbstractPainter


谢谢

在Java中,正确的思考方法是扩展抽象类并实现接口


例如,一个
LinkedList
实现了
List
接口和
AbstractSequentialList

,在Java中,正确的考虑方法是扩展抽象类并实现接口


例如,
LinkedList
实现了
List
接口和
AbstractSequentialList
它们只扩展了
AbstractPainter
。它们确实实现了
ipainer
。所以你可以

IPainter painter = new PastPainter();
AbstractPainter otherPainter = new ContemporaryPainter();
它仍然是有效的

但是,在集合中引用它们时,如

List<? extends IPainter> list = new ...

List它们只扩展
AbstractPainter
。它们确实实现了
ipainer
。所以你可以

IPainter painter = new PastPainter();
AbstractPainter otherPainter = new ContemporaryPainter();
它仍然是有效的

但是,在集合中引用它们时,如

List<? extends IPainter> list = new ...

ListYes
PastPainter
ContemporaryPainter
属于
IPainter
类型,因为它们扩展了实现
IPainter
AbstractPainter

例如:假设
ClassA
实现或扩展
ClassB
。如果
ClassC
扩展/实现
ClassA
,那么自动
ClassC
也是
ClassB
的类型


任何子类都属于其超类的类型,也属于其超类继承自的类型。

Yes
PastPainter
ContemporaryPainter
属于
iPainer
类型,因为它们扩展了实现
iPainer
AbstractPainter

例如:假设
ClassA
实现或扩展
ClassB
。如果
ClassC
扩展/实现
ClassA
,那么自动
ClassC
也是
ClassB
的类型


任何子类都属于其超类的类型,也属于其超类继承自的类型。

从语义角度来看,您示例中的接口和abtract类是冗余的。抽象类的定义将是足够的。但是,对于您的问题,明确的符合UML的答案是,AsbtractPainter并没有直接实现接口iPainer,而是专门化抽象类而非抽象类的类的实例。定义专用类可以替代通用类也很重要

从语义的角度来看,您示例中的接口和abtract类是冗余的。抽象类的定义将是足够的。但是,对于您的问题,明确的符合UML的答案是,AsbtractPainter并没有直接实现接口iPainer,而是专门化抽象类而非抽象类的类的实例。定义专用类可以替代通用类也很重要

这里明显缺少图表。出于某种原因,图表的图片没有显示:这里明显缺少图表。出于某种原因,图表的图片没有显示:谢谢,这帮了大忙!但是,如果,例如,我想要实现一个关于泛型类型的画师的泛型方法呢?我用还是用?你可以用任何一个。如果您有其他
ipainer
s,并且您也希望包括这些,则使用
T扩展ipainer
。如果要排除这些,请使用
AbstractPainter
。如果你没有,也永远不会有其他人,那没关系。谢谢,这帮了大忙!但是,如果,例如,我想要实现一个关于泛型类型的画师的泛型方法呢?我用还是用?你可以用任何一个。如果您有其他
ipainer
s,并且您也希望包括这些,则使用
T扩展ipainer
。如果要排除这些,请使用
AbstractPainter
。如果你没有,也永远不会有任何其他人,那就没关系了。