有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

假设我有一个接口,它有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) 个答案

  1. # 1 楼答案

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

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

    注意:正如@anonymous所说的,如果您使用Java8,那么可以使用default methodsinterface

  2. # 2 楼答案

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

    class Abs extends SomeClass {
    
    }
    
    class Test extends Abs implements Inf {
    }
    
  3. # 3 楼答案

    使用Java8,您可以在接口内定义方法的默认实现

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