繁体   English   中英

如何将相同的行为放在从类扩展的超类中?

[英]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>

FooAFooBFooCFooA FooCFoobar<V> (-> public class Foobar<V extends FooY> implements IFoobar<V> ),但继承级别不同。 此外,值得一提的是FooAFooBFooC是 API 的一部分,我无法修改。 在我的课MyClassAMyClassBMyClassC ,我使用的一些属性和方法完全相同的方式并因此我想创建一个父类,将实现该相同的行为。 但是,我不确定如何通过泛型实现这种继承场景。

我想过这样的事情:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM