2013-02-21 188 views
1

我有三个Java类。前两类延伸ClassA,最后一类延伸ClassB扩展泛型类

Class1 extends ClassA 

Class2 extends ClassA 

Class3 extends ClassB 

我在三类(Class1-3)一些重复的方法。为了避免让他们重复我加了一个ClassCommon像这样:

Class1 extends (ClassCommon extends ClassA) 

Class2 extends (ClassCommon extends ClassA) 

Class3 extends ClassB 

所以我复制的方法现在在ClassCommon,但我仍然有重复Class3ClassCommon之间的方法。

我希望我做出迄今为止敏感。

我的问题是:反正是有,使用泛型类型,能有这样的配置:

Class1 extends ClassCommon<ClassA> 

Class2 extends ClassCommon<ClassA> 

Class3 extends ClassCommon<ClassB> 

ClassCommon<E> extends E 
+2

没有,没有。 – 2013-02-21 20:29:28

+0

反正有没有在我的例子中避免重复? – 2013-02-21 20:33:09

+0

什么是泛型类型参数“E”应该表示?任何类型?你的课程之一? – rgettman 2013-02-21 20:33:22

回答

3

怎么样

Class1 extends ClassA 
Class2 extends ClassA 
Class3 extends ClassB 
ClassA extends ClassCommon 
ClassB extends ClassCommon 

,或者与接口:

Class1 extends ClassCommon implements ClassA 
Class2 extends ClassCommon implements ClassA 
Class3 extends ClassCommon implements ClassB 

祝你好运!

+0

+1促进界面使用和良好的面向对象操作 – 2013-02-21 23:09:15

1

我不知道你有什么共同的功能,但尝试ClassCommon为你的类层次结构的根:

class ClassCommon<E extends ClassCommon<E>> 

class ClassA extends ClassCommon<ClassA> 

class ClassB extends ClassCommon<ClassB> 

class Class1 extends ClassA 

class Class2 extends ClassA 

class Class3 extends ClassB 
2

使用ClassCommon为您的层次结构的根。

public abstract class ClassCommon { 

    /* 
    * Your methods here. 
    */ 
} 

则...

public class ClassA extends ClassCommon 
public class ClassB extends ClassCommon 

......还有......

public class Class1 extends ClassA 
public class Class2 extends ClassA 
public class Class3 extends ClassB