美文网首页
Jdk1.8新特性之default、static关键字

Jdk1.8新特性之default、static关键字

作者: 一生鎻愛 | 来源:发表于2018-09-19 11:38 被阅读0次

    default

    在写接口AsyncConfigurer的实现类时,IDE居然没有强制要求实现接口中的方法,感觉很是奇怪,因此查看其源码:

    public interface AsyncConfigurer {
    
       @Nullable
       default Executor getAsyncExecutor() {
           return null;
       }
    
       @Nullable
       default AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
           return null;
       }
    }
    

    发现有一个default关键字,后来在网上查看资料才知晓这是jdk1.8的一个新特性:

    1.可以有且必须有方法体
    2.实现类可以不重写该方法,此时会调用接口方法
    3.若实现类重写了该方法,此时调用实现类中的方法

    创建一个Person接口

    public interface Person {
    
        default void say() {
            System.out.println("I'm a person");
        }
    }
    

    Student实现Person接口

    public class Student implements Person {
    
        public static void main(String[] args) {
            Student t = new Student();
            t.say();
        }
    }
    

    输出:

    I'm a person

    修改Student 实现类

    public class Student implements Person {
    
        @Override
        public void say() {
            System.out.println("I'm a student");
        }
        
        public static void main(String[] args) {
            Student t = new Student();
            t.say();
        }
    }
    

    输出

    I'm a student

    static

    在jdk1.7是不可能将接口中的方法修饰成static

    public interface Person {
    
        static void say() {
            System.out.println("I'm a person");
        }
    }
    

    使用方式: ClassName.staticMethod

    public class Student {
        
        public static void main(String[] args) {
            Person.say();
        }
    }
    

    ·

    相关文章

      网友评论

          本文标题:Jdk1.8新特性之default、static关键字

          本文链接:https://www.haomeiwen.com/subject/tcgbnftx.html