8

Javaは、複数のクラスを拡張できないようにすることで、多重継承をサポートしていないことを私は知っています。問題の回避策があるかどうかを知りたいだけです。

CustomAction2つの抽象クラスを拡張する必要があるという名前のクラスがBaseActionありますQuoteBaseAction。これらの抽象クラスを変更して、一方を他方に拡張することはできません。

これらの抽象クラスには、私が利用する必要のあるメソッド実装があります。インターフェイスは別のインターフェイスしか拡張できないため、インターフェイスを作成することもできません。

何か案は?

4

5 に答える 5

5

どうぞ ...

public class CustomAction extends BaseAction {
  class Inner extends QuoteBaseAction {

  }
}
于 2013-03-15T10:02:43.847 に答える
5

構成は進むべき道です。クラスの一部として抽象クラスの1つを作成します。

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

いいえ、2つの抽象クラスから継承することはできません。抽象クラスがインターフェースを実装している場合は、これを回避できます。この場合、継承を構成に置き換えることができます。

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 に答える