我知道Java不支持多重继承,因为不允许扩展多个类。我只是想知道我的问题是否有解决方法。
我有一个名为CustomAction
的类,需要扩展两个抽象类BaseAction
和QuoteBaseAction
。我不能改变任何这些抽象类,并将其他类扩展。
这些抽象类具有我需要使用的方法实现。我也无法创建接口,因为接口只能扩展另一个接口。
有什么想法吗?
答案 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中,抽象类可以扩展其他抽象类。