• JDK8.0接口中的默认方法和静态方法


    我们在接口中通常定义的方法是抽象方法,即没有方法体,只有返回值类型和方法名:(public abstract) void Method();

    类在实现接口的时候必须重写抽象方法才可以

    jdk8中新加的默认方法和静态方法是什么呢?

    可以通俗理解:静态方法属于类,调用静态方法通过接口名曲调用它,默认方法在实现类中可以重写,可以不重写

    ;默认方法,在接口中定义,区别抽象方法,有方法体
    public interface DefaultStaticInterface {
        //普通方法,类实现接口必须重写它
        abstract void Method();
    
        //默认方法在类实现接口时候可以不重写,也可以重写
        public default void defaultMethod() {
            System.out.println("这是接口定义的默认方法,实现接口可以不重写他");
        }
    
        ;
    
        //静态方法是属于接口的,调用它必须用接口调用
        public static void staticMethod() {
            System.out.println("这是接口的静态方法");
        }
    
        ;
    
    }
    //探索静态方法 默认方法是否可以被继承
    interface ExtendInterface extends DefaultStaticInterface{
        void speak();
    }
    
    class Test implements DefaultStaticInterface {
        @Override
        public void Method() {
            System.out.println("重写了类中定义的抽象方法Method");
        }
    
        @Override
        public void defaultMethod() {
            System.out.println("这里选择性的重写了了接口中的默认方法defaultMethod()");
        }
    
        //静态方法,通过接口定义
        public static void main(String[] args) {
            //静态方法的调用
            DefaultStaticInterface.staticMethod();
            Test test = new Test();
            test.Method();
            test.defaultMethod();
        }
    }
    class Test01 implements ExtendInterface{
        @Override
        public void speak() {
            System.out.println("重写speak方法");
        }
    
        @Override
        public void Method() {
            System.out.println("重写父类中的抽象方法");
        }
    
        @Override
        public void defaultMethod() {
            System.out.println("重写父类接口中的默认方法");
        }
        //可以知道,子类接口中的默认方法是可以继承的,但是静态方法始终是属于父类接口的,通过父类接口调用
        public static void main(String[] args) {
            Test01 test01=new Test01();
            test01.Method();
            test01.defaultMethod();
            DefaultStaticInterface.staticMethod();
            
        }
    }
  • 相关阅读:
    NameNode格式化后HBase创建新表提示旧表已存在:table already exists
    多次NameNode执行format后DataNode启动不了解决方案
    Zookeeper群起脚本启动失败及查看状态出现:Error contacting service. It is probably not running
    Spark中的术语图解总结
    Spark架构角色及基本运行流程
    大牛博客链接
    python pip安装解决方法
    自动化测试学习路线
    深入理解计算机系统(第三版)
    汇编语言(王爽 第三版)--笔记
  • 原文地址:https://www.cnblogs.com/doudou2018/p/9637696.html
Copyright © 2020-2023  润新知