扩展多个类

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

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

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

有任何想法吗?

干得好 …

 public class CustomAction extends BaseAction { class Inner extends QuoteBaseAction { } } 

构图是要走的路。把你的一个抽象类作为你class级的一部分。

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

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

 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(); } } 

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

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