8

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

我有一个名为的类CustomAction,它需要扩展两个抽象类,BaseAction并且QuoteBaseAction. 我不能改变这些抽象类中的任何一个并让一个扩展另一个。

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

有任何想法吗?

4

5 回答 5

5

干得好 ...

public class CustomAction extends BaseAction {
  class Inner extends QuoteBaseAction {

  }
}
于 2013-03-15T10:02:43.847 回答
5

组合是要走的路。将您的抽象类之一作为您的类的一部分。

public abstract class Abs1 {
 //
 } 
public abstract class Abs2 {
 //
 } 
public  class Main extends Abs1 {
 Abs2 abs2 = ...
//impl
 } 
于 2013-03-15T10:03:16.060 回答
1

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

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();
   }
}
于 2013-03-15T10:07:57.113 回答
0

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

于 2013-03-15T10:03:27.527 回答
-1

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

于 2013-03-15T10:02:35.550 回答