无法在java中扩展抽象类时的部分接口实现

时间:2014-04-04 10:52:33

标签: java interface abstract-class partial

假设我有一个有3种方法的接口。这个接口由许多类实现,但say method1的实现在所有类中都是相同的。

我可以创建一个抽象类,并为method1提供一个具体的实现,让我的类扩展这个类。

我的问题是,当我已经扩展了一个类时,我如何扩展这个抽象类。 Java不支持它。我应该如何在这种情况下进行设计?

interface Inf{
 void method1();
 void method2();
 void method3();
}

public abstract class Abs implements Inf{
 void method1(){
  //concrete implementation
 }
}

class Test extends SomeClass implements Inf{
   //here I need method1 implementation and other methods Ill implement
}

class SomeClass{
}

3 个答案:

答案 0 :(得分:3)

使用java 8,您可以在界面内定义方法的默认实现。

public interface A {
    default void method1() { System.out.println("Default method1 implementation"); }
    void method2();
    void method3();
}

答案 1 :(得分:0)

Java不支持Multiple Inheritance。即一个类不能有多个基类。您可以做的是让SomeClass扩展Abs

class SomeClass extends Abs{

}

class Test extends SomeClass implements Inf{
   //here you can get method1 implementation since Someclass extends Abs
}

注意:如@anonymous所述,如果您使用Java 8,则可以使用default methods interface

答案 2 :(得分:0)

Java不支持多重继承。 您可以使Abs类扩展SomeClass

class Abs extends SomeClass {

}

class Test extends Abs implements Inf {
}