扩展多个类

时间:2013-03-15 10:00:04

标签: java inheritance

我知道Java不支持多重继承,因为不允许扩展多个类。我只是想知道我的问题是否有解决方法。

我有一个名为CustomAction的类,需要扩展两个抽象类BaseActionQuoteBaseAction。我不能改变任何这些抽象类,并将其他类扩展。

这些抽象类具有我需要使用的方法实现。我也无法创建接口,因为接口只能扩展另一个接口。

有什么想法吗?

5 个答案:

答案 0 :(得分:5)

Composition是要走的路。把你的一个抽象类作为你班级的一部分。

public abstract class Abs1 {
 //
 } 
public abstract class Abs2 {
 //
 } 
public  class Main extends Abs1 {
 Abs2 abs2 = ...
//impl
 } 

答案 1 :(得分:3)

你去......

public class CustomAction extends BaseAction {
  class Inner extends QuoteBaseAction {

  }
}

答案 2 :(得分:1)

不,你不能从两个抽象类继承。 如果抽象类实现接口,您可以解决它。在这种情况下,您可以使用composition:

替换继承
abstract class BaseAction implements Action { ... }

abstract class QuoteBaseAction implements QuoteAction { ... }

class CustomAction implements Action, QuoteAction {

   private BaseAction baseAction;
   private QuoteBaseAction quoteBaseAction;

   public Bar methodFromAction() {
       return baseAction.methodFromAction();
   }

   public Foo methodFromQuoteAction() {
       return quoteBaseAction.methodFromQuoteAction();
   }
}

答案 3 :(得分:0)

你最好的选择就是代表团。您可以实现这两个接口(如果这些类使用接口)或创建接口以在那里使用,然后在您的类中保存您委派调用的每个类的实例。

答案 4 :(得分:-1)

在java中,抽象类可以扩展其他抽象类。