美文网首页
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