zoukankan      html  css  js  c++  java
  • 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();
            
        }
    }
  • 相关阅读:
    maven3自定义archetype
    Struts2传参碰到的奇怪问题
    easyui1.2.6 validate输入框验证在火狐下的一个bug
    easyui+ztree 后台管理系统模板
    html table中单元格自动换行
    windows重装后,不重装oracle,直接恢复数据库
    Debug---Eclipse断点调试基础
    Spring3 MVC请求参数获取的几种方法[转载]
    jQuery插件之ajaxFileUpload[转载]
    Spring MVC 3.0 深入及对注解的详细讲解[转载]
  • 原文地址:https://www.cnblogs.com/doudou2018/p/9637696.html
Copyright © 2011-2022 走看看