是否可以在 Java 中在接口内部定义构造函数?


不,在 Java 中不能在接口内定义构造函数。

  • 截至 Java7,只能有公共、静态、最终变量和公共、抽象方法。

  • 从 Java8 开始,接口允许默认方法和静态方法。

  • 从 Java9 开始,接口允许私有和私有静态方法。

此外,在接口中定义的所有方法(上述方法除外)都应由其他类(覆盖)实现。但是,无法在 Java 中覆盖构造函数。

即便如此,如果尝试在接口中定义构造函数,仍会产生编译时错误。

示例

在以下 Java 程序中,我们尝试在接口内定义构造函数。

public interface MyInterface{
   public abstract MyInterface();
   /*{
      System.out.println("This is the constructor of the interface");
   }*/
   public static final int num = 10;
   public abstract void demo();
}

编译时错误

编译时,以上程序会生成以下错误

输出

MyInterface.java:2: error: expected
   public abstract MyInterface();
^
1 error

简而言之,它不接受接口中没有返回类型的方法。如果向 MyInterface() 方法添加返回类型,则它被视为普通方法,并且程序可以在没有错误的情况下编译。

public interface MyInterface {
   public abstract void MyInterface();
   public static final int num = 10;
   public abstract void demo();
}

更新于:2020-6-29

7K+ 浏览量

开启你的 职业生涯

完成课程以获得认证

开始学习
广告