• java8/接口方法,default,static


    gitee

    package com.xcrj.java8.defaultfunc;
    
    /**
     * xcrj 接口静态方法,接口默认方法,让接口具有抽象能力和向下兼容能力
     * 接口默认方法出现的原因:接口增加抽象方法,修改抽象方法之后,所有的实现类都需要修改,破坏了向下兼容
     * 接口的静态方法,只能通过接口名.静态方法调用
     * 接口默认方法, 通过实现类调用
     * 接口默认方法,可以被@Override
     * - 实现类@Override接口的default方法,调用实现类的方法
     * 为了向下兼容
     * - 类 extends类 implements接口,调用继承类的方法,类优先(为了向下兼容)
     * 类 implements接口1,接口2,必须@Override default方法
     */
    public class Test1 {
        public static void main(String[] args) {
            // 调用接口静态方法
            MyInterface.staticFunc();
    
            // 调用接口默认方法
            ImplClass implClass=new ImplClass();
            implClass.defaultFunc();
    
            // 类实现接口的默认方法
            MyInterface implClass1=new ImplClass1();
            implClass1.defaultFunc();
    
            // 类 extends类 implements接口,类优先(为了向下兼容)
            ImplClass2 implClass2=new ImplClass2();
            implClass2.defaultFunc();
    
            
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    package com.xcrj.java8.defaultfunc;
    
    public interface MyInterface {
        static void staticFunc(){
            System.out.println("static MyInterface");
        }
    
        default void defaultFunc(){
            System.out.println("default MyInterface");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    package com.xcrj.java8.defaultfunc;
    
    public class ImplClass implements MyInterface {
        
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    package com.xcrj.java8.defaultfunc;
    
    // 可以重写
    public class ImplClass1 implements MyInterface{
        @Override
        public void defaultFunc(){
            System.out.println("ImplClass1");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    package com.xcrj.java8.defaultfunc;
    
    public class MyClass {
        public void defaultFunc(){
            System.out.println("MyClass defaultFunc");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    package com.xcrj.java8.defaultfunc;
    
    // 类优先
    public class ImplClass2 extends MyClass implements MyInterface{
        
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    package com.xcrj.java8.defaultfunc;
    
    public interface MyInterface2 {
        default void defaultFunc(){
            System.out.println("default MyInterface2");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    package com.xcrj.java8.defaultfunc;
    
    // 必须重写
    public class ImplClass3 implements MyInterface,MyInterface2 {
        @Override
        public void defaultFunc(){
            System.out.println("MyClass3 defaultFunc");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    [安洵杯 2019]easy_web-1
    Nginx 实战教程
    在linux下MySQL的常用操作命令
    浅析数据迁移工具Sqoop
    「Redis」03 配置文件详解
    2023国赛数学建模E题思路分析-黄河水沙监测数据分析
    毛胚房需要验收吗
    sigmoid和softmax函数的区别;神经网路常用的损失函数以及对应的应用场景;softmax的作用
    python+pytest接口自动化(15)-日志管理模块loguru简介
    Go复合类型之数组类型
  • 原文地址:https://blog.csdn.net/baidu_35805755/article/details/128006082