当前位置 : 主页 > 编程语言 > java >

JAVA接口解析续

来源:互联网 收集:自由互联 发布时间:2022-09-02
总结: 接口不能有静态代码块 接口不能有构造方法 一个类的父类是唯一的,但是一个类可以同时实现多个接口 如果实现类所实现的多个接口当中,存在重复的接口抽象方法,那么只需


总结:

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

    JAVA接口解析续_接口

    代码:

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


    上一篇:抽象工厂案例解析
    下一篇:没有了
    网友评论