是否可以在 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(); }
广告