繁体   English   中英

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

[英]Partial interface implementation when you cannot extend a abstract class in java

假设我有一个包含3种方法的接口。 这个接口将由许多类实现,但是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{
}

使用Java 8,您可以在接口内部定义方法的默认实现。

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

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 methodsinterface default methods

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

class Abs extends SomeClass {

}

class Test extends Abs implements Inf {
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM