zoukankan      html  css  js  c++  java
  • interface中定义default方法和static方法

    interface的default方法和static方法

    • 接口中可以定义static方法,可通过接口名称.方法名()调用,实现类不能继承static方法;
    • 接口中可以定义default方法,default修饰的方法有方法体,表示这个方法的默认实现,子类可以直接调用,可以选择重写或者不重写;
    • 当实现类实现的多个接口中,有方法签名相同的default方法时,必须重写该方法;

      接口一:

    package com.skd.interfacemethod;
    
    /**
     * @Description
     * @Author virgosnail
     * @Date 2018/12/12
     */
    
    public interface Human {
    
        /**
         * 必须被重写
         */
        void oldMethod();
    
        /**
         * 实现类可以选择重写,也可以不重写
         */
        default void hi(){
            System.out.println("interface default method");
        }
    
        /**
         * 不能被实现类重写
         */
        static void hello(){
            System.out.println("interface static method");
        }
    }

      接口二:

    package com.skd.interfacemethod;
    
    /**
     * @Description
     * @Author virgosnail
     * @Date 2018/12/12 20:59
     */
    
    public interface Humen {
    
        default void hi(String aa){
            System.out.println("interface default method");
        }
    }

      实现类:

    package com.skd.interfacemethod;
    
    /**
     * @Description
     * @Author virgosnail
     * @Date 2018/12/12
     */
    
    public class Person implements Human,Humen {
    
        @Override
        public void oldMethod() {
    
        }
    
        /**
         * 实现的多个接口中有方法签名相同的default 方法时,实现类必须重写该方法
         */
        @Override
        public void hi() {
    
        }
        /**
         * 实现类不能继承接口的static 方法
         */
    }

      测试类:

    package com.skd.interfacemethod;
    
    /**
     * @Description
     * @Author virgosnail
     * @Date 2018/12/12
     */
    
    public class Test {
        public static void main(String[] args) {
            // interface 的 default 方法通过实现类的实例对象调用
            new Person().hi();
            // interface 的 static 方法通过 接口名称.方法名称直接调用
            Human.hello();
    
        }
    }
  • 相关阅读:
    检测对象类型的两种方式,constructor属性和instanceof
    Javascript中的事件
    工厂模式、寄生构造函数模式、稳妥构造函数模式比较
    ECMAScript中的原型继承
    Javascript中new的作用
    js组合继承
    【原型模式】--重写原型对象prototype的影响
    动态原型模式
    js类型检测
    Javascript中的继承与复用
  • 原文地址:https://www.cnblogs.com/virgosnail/p/10111075.html
Copyright © 2011-2022 走看看