默认方法
通过实例类调用默认方法,可以被重写 ,在接口中用default
关键字定义接口的默认方法。普通接口方法是不能有实现的,默认方法必须有实现
public class InterfaceDefaultMethod {
public static void main(String[] args) {
bb bb = new bb();
bb.test01();//直接调用实现接口的默认方法
cc cc = new cc();
cc.test01();//重写实现接口的默认方法
}
}
interface aa{
public default void test01()
{
System.out.println("接口aa的默认方法");
}
}
class bb implements aa{
}
class cc implements aa{
@Override
public void test01() {
System.out.println("cc重写了aa的默认方法");
}
}
结果:
静态方法
只能通过接口名调用静态方法,不能被重写。
public class InterfaceStaticMethod {
public static void main(String[] args) {
b b = new b();
//报错、无法调用
// b.test01();
//通过接口名可以调用
a.test01();
}
}
interface a{
public static void test01()
{
System.out.println("这是接口a的静态方法");
}
}
class b implements a{
//报错、无法重写
// @Override
// public static void test01()
// {
// System.out.println("这是接口a的静态方法");
// }
}
实现接口无法重写
实例类无法调用
结果:
接口的静态方法和默认方法的区别
1.默认方法通过实例调用,静态方法通过接口名调用。
2.默认方法可以被继承,实现类可以直接使用接口默认方法,也可以重写接口默认方法。
3.静态方法不能被继承,实现类不能重写接口静态方法,只能使用接口名调用。