如何只实现抽象类的某些方法?

在我的具体类中,我需要实现(设置公共)抽象类的某些方法。 所以我无法扩展它,因为所有的抽象方法都是公开的。

我可以使用组合,并转发我需要的方法,但我显然需要实现抽象类。 所以,我想知道,在私有类中实现抽象类然后在父类中只转发内部类所需的方法是一种好方法吗?

例如:

public class ConcreteClass{ private InnerClass inner = new InnerClass(); public String fwMethod() { return inner.method1(); } private class InnerClass extends AbstractClass { public String method1(){ ...} public String method2(){ ...} } } 

有更好的方法吗?

抽象类的具体子类必须至少提供抽象方法的最小实现。

  • 可以实现您不想实现的方法来抛出未经检查的exception。 UnsupportedOperationException是不错的选择,或者您可以使用更具体的含义实现自己的类。

  • 您可以将子类声明为abstract …但这意味着您将无法实例化它。

  • 您可以重构您的基类和接口,以便您的具体类具有很少的抽象方法来实现。

为什么不修改抽象类以从其他类inheritance,并且只实现具有所需方法的类?

例如,如果你只需要aa,ab而不是aa,ab,aaa,aab:class A,方法aa,ab class B,方法aaa,aab Binheritance自A.

您的具体类inheritance自A并且只能访问aa和ab,从而避免使用aaa,aab的实现。

实现您需要的方法,并在您不想实现的任何方法上抛出UnsopportedOperationException。

http://docs.oracle.com/javase/7/docs/api/java/lang/UnsupportedOperationException.html