目前java接口中已经支持定义静态方法 但需要注意一个点
我们先把代码写出来
我们创建一个包
下面创建一个接口 subInterface 接口参考代码如下
public interface subInterface {static void show2() {System.out.println("来自接口的静态方法");}
}
这里 我们就将 show2 定义成了一个静态的方法
然后 我们可以定义一个实现类来实现这个接口
public class realizationMethod implements subInterface {
}
这里 大家就可以看出 我们静态方法 因为是有方法体的 所以也是可以不用重写的 当然 接口的静态方法 你也不需要重写 重写你也用不了
然后 我们定义一个测试类 来调用接口方法
public static void main(String args[]) {subInterface real = new realizationMethod();
}
这里 我们通过realizationMethod类创建了一个subInterface接口的对象
然后 我们试着调用show2
可以看到 我们这里是报错了 可能就会有人说 让realizationMethod类重写一下subInterface 的show2
但重写之后 还是会报错的
这里 我们要直接通过接口名来调用静态方法
测试类代码修改如下
public static void main(String args[]) {subInterface real = new realizationMethod();subInterface.show2();
}
运行结果如下
因为 比如 你有 A B两个接口 他们都写了一个静态方法 然后 C类继承了两个接口 然后 C类调用了 A B接口都有点那个静态方法 那么计算机就蒙了 你调的到底是 A的还是B的静态方法呢?
所以 为了避免争议 java直接封了实现类调用接口静态方法的写法 你想用接口的静态方法 就要用接口名去调