JAVA接口解析
2020-03-23 本文已影响0人
zhuhuix
总结:
- 接口不能有静态代码块
- 接口不能有构造方法
- 一个类的父类是唯一的,但是一个类可以同时实现多个接口
- 如果实现类所实现的多个接口当中,存在重复的接口抽象方法,那么只需要覆盖重写一个抽象方法
- 如果实现类没有覆盖重写所有接口当中的所有抽象方法,那实现类必须是一个抽象类
- 如果实现类实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写
- 如果一个类的父类中的公开方法,与该类实现的接口中的默认方法产生了冲突 ,则优先用父类中的公开方法
流图:
在这里插入图片描述
代码:
public abstract class InterfaceImpl extends InterfaceImplParent
implements Interface1,Interface2,Interface3,Interface4,Interface5,Interface6 {
//重写接口1中的抽象方法
@Override
public void method1() {
System.out.println("覆盖重写接口1的抽象方法1");
}
//重写接口2中的抽象方法
@Override
public void method2() {
System.out.println("覆盖重写接口2的抽象方法2");
}
//该实现类未覆盖重写接口3中的method3抽象方法,所以该类必须要以abstract修饰
//接口1和接口2中存在重复的method抽象方法,只需要覆盖重写其中一个
@Override
public void method() {
System.out.println("覆盖重写接口1或接口2的方法");
}
//接口4和接口5存在重复的defaultMethod方法,实现类必须覆盖重写该方法
@Override
public void defaultMethod() {
System.out.println("覆盖重写接口4和接口5的默认方法");
}
//该实现类继承了父类InterfaceImplParent的公开方法method6
}
public interface Interface1 {
//Error:接口中不能有构造方法
//Interface1();
//Error:接口中不能有静态代码块
//static{
//
// }
void method();
void method1();
}
public interface Interface2 {
void method();
void method2();
}
public interface Interface3 {
void method3();
}
public interface Interface4 {
default void defaultMethod(){
System.out.println("这是接口4中的默认方法");
}
}
public interface Interface5 {
default void defaultMethod(){
System.out.println("这是接口5中的默认方法");
}
}
public interface Interface6 {
default void method6() {
System.out.println("这是接口6中的默认方法6");
}
}
public class InterfaceImplParent {
public void method6() {
System.out.println("这是InterfaceImplParent类中的方法6");
}
}
//*测试类*
public class InterfaceTest extends InterfaceImpl {
@Override
public void method3() {
System.out.println("实现接口3中的抽象方法");
}
public static void main(String[] args) {
InterfaceTest interfaceTest = new InterfaceTest();
interfaceTest.method1();
interfaceTest.method2();
interfaceTest.method3();
interfaceTest.defaultMethod();
//如果一个类的父类中的公开方法,与该类实现的接口中的默认方法产生了冲突 ,则优先用父类中的公开方法
interfaceTest.method6();
}
}