我知道 Java 不允许扩展多个类,因此不支持多重继承。我只想知道我的问题是否有解决方法。
我有一个名为的类CustomAction
,它需要扩展两个抽象类,BaseAction
并且QuoteBaseAction
. 我不能改变这些抽象类中的任何一个并让一个扩展另一个。
这些抽象类具有我需要使用的方法实现。我也无法创建接口,因为接口只能扩展另一个接口。
有任何想法吗?
我知道 Java 不允许扩展多个类,因此不支持多重继承。我只想知道我的问题是否有解决方法。
我有一个名为的类CustomAction
,它需要扩展两个抽象类,BaseAction
并且QuoteBaseAction
. 我不能改变这些抽象类中的任何一个并让一个扩展另一个。
这些抽象类具有我需要使用的方法实现。我也无法创建接口,因为接口只能扩展另一个接口。
有任何想法吗?
干得好 ...
public class CustomAction extends BaseAction {
class Inner extends QuoteBaseAction {
}
}
组合是要走的路。将您的抽象类之一作为您的类的一部分。
public abstract class Abs1 {
//
}
public abstract class Abs2 {
//
}
public class Main extends Abs1 {
Abs2 abs2 = ...
//impl
}
不,您不能从两个抽象类继承。如果抽象类实现接口,您可以解决它。在这种情况下,您可以用组合替换继承:
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中,抽象类可以扩展其他抽象类。