[英]Java extends classes - Share the extended class fields within the super class
[英]How to put same behavior in a super class, which extends from classes?
我有以下三个类:
public class MyClassA extends FooA<Bar>
public class MyClassB extends FooB<Bar>
public class MyClassC extends FooC<Bar>
FooA
、 FooB
和FooC
类FooA
FooC
了Foobar<V>
(-> public class Foobar<V extends FooY> implements IFoobar<V>
),但继承级别不同。 此外,值得一提的是FooA
、 FooB
和FooC
是 API 的一部分,我无法修改。 在我的课MyClassA
, MyClassB
和MyClassC
,我使用的一些属性和方法完全相同的方式并因此我想创建一个父类,将实现该相同的行为。 但是,我不确定如何通过泛型实现这种继承场景。
我想过这样的事情:
public class MyParentClass<V extends Foobar> extends V
然后我会简单地执行以下操作:
public class MyClassA extends MyParentClass<FooA<Bar>>
public class MyClassB extends MyParentClass<FooB<Bar>>
public class MyClassC extends MyParentClass<FooC<Bar>>
我怎样才能使这项工作?
每当您被“继承太多”所困扰时,正确的答案可能是古老的口头禅:更喜欢组合而不是继承。
换句话说:请记住,继承不仅仅是将“A extends B”放在某个类声明上; 还要记住继承的主要目的是表达“是一个”关系; 它并不是一种避免代码重复的简单方法。 (是的,代码重复非常重要,但使用继承来实现它通常是一个坏主意!)
从这个意义上说:而不是进一步增加这个“继承丛林”; 我宁愿退后一步,看看定义一些新接口是否有意义,以更好地捕获您需要的功能集; 并创建实现这些接口的类; 不是基于继承其他类,而是通过实例化这些类的对象; 并放置一些包装。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.