美文网首页
JAVA接口解析

JAVA接口解析

作者: zhuhuix | 来源:发表于2020-03-23 12:44 被阅读0次

总结:

  1. 接口不能有静态代码块
  2. 接口不能有构造方法
  3. 一个类的父类是唯一的,但是一个类可以同时实现多个接口
  4. 如果实现类所实现的多个接口当中,存在重复的接口抽象方法,那么只需要覆盖重写一个抽象方法
  5. 如果实现类没有覆盖重写所有接口当中的所有抽象方法,那实现类必须是一个抽象类
  6. 如果实现类实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写
  7. 如果一个类的父类中的公开方法,与该类实现的接口中的默认方法产生了冲突 ,则优先用父类中的公开方法

流图: 在这里插入图片描述

代码:

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();
    }
}

相关文章

网友评论

      本文标题:JAVA接口解析

      本文链接:https://www.haomeiwen.com/subject/bcfwyhtx.html