public interface Demo1 {
public default void method2(){
System.out.println("Hello");
}
}
如果当前有一个接口,并且n多个类实现了这个接口;而当接口再次添加抽象方法的时候,n多个实现类就会报错。而出现了默认方法就解决了这个问题
接口:
public interface Demo1 {
public abstract void method();
//新添加的默认方法
public default void methodDefault(){
System.out.println("这是新添加的接口默认方法");
}
}
实现类:
public class MyImpA implements Demo1 {
@Override
public void method() {
System.out.println("这是实现类的抽象方法");
}
}
main方法:创建了实现类的对象,可以调用实现类的方法,也可以调用接口的默认方法
注意:如果实现类重写了接口的默认方法,那么调用的就是实现类重写后的方法
public class Main {
public static void main(String[] args) {
MyImpA a = new MyImpA();
a.method();
a.methodDefault(); //调用接口的默认方法
}
}
输出结果:这是实现类的抽象方法
这是新添加的接口默认方法
接口:
public interface Demo2 {
public static void method(){
System.out.println("这是接口的静态方法");
}
}
mian方法:
public class MyImpB {
public static void main(String[] args) {
Demo2.method(); //输出 这是接口的静态方法
}
}
1.普通私有方法:解决多个默认方法之间重复代码的问题
格式:private 返回值类型 方法名称(参数列表){ 方法体 }
2.静态私有方法:解决多个静态方法之间的重复代码问题
格式:private static 返回值类型 方法名称(参数列表){ 方法体 }
1.接口没有静态代码块,不能有构造方法
2.一个类可以实现多个接口
3.如果实现类所有实现的多个接口中,存在重复的抽象方法,覆盖重写一次即可
4.如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么这个实现类必须是一个抽象类
5.接口可以多继承,但是如果继承来多个defalut方法相同,那么必须对冲突的defalut方法进行覆盖重写
6.一个类如果直接继承父类当中的方法,和接口当中的默认方法产生了冲突,优先用父类的方法
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://lebron.blog.csdn.net/article/details/125029530
内容来源于网络,如有侵权,请联系作者删除!