default关键字

default关键字在JDK8中有两个用处。

1.在switch语句的时候使用default

int gender = 3;
String genderString;
switch (gender) {
    case 1: genderString = "male";
            break;
    case 2: genderString = "female";
            break;

            break;
    //如果case没有匹配的值,那么肯定是LGBT
    default: genderString = "LGBT";
             break;
}
System.out.println(genderString);

当case里的值与switch里的key没有匹配的时候,执行default里的方法。

2. 在定义接口的时候使用default来修饰具体的方法

interface IntefercaeDemo {

    //具体方法
    default void showDefault(){
        System.out.println("this is showDefault method");
    }
    //具体方法
    static void showStatic(){
        System.out.println("this is showStatic method");
    }

    //没有实现的抽象方法
    void sayHi();
}
class LearnDefault implements IntefercaeDemo{
    //实现抽象方法
    @Override
    public void sayHi() {
        System.out.println("this is sayHi mehtod");
    }

    public static void main(String[] args) {
        //接口中被static所修饰的具体方法
        IntefercaeDemo.showStatic();

        //将实现了IntefercaeDemo的类实例化
        LearnDefault learnDefault = new LearnDefault();
        //被Default所修饰的具体方法可以通过引用变量来调用
        learnDefault.showDefault();

 

JDK8中为了加强接口的能力,使得接口可以存在具体的方法,前提是方法需要被default或static关键字所修饰。

这样做的好处是接口的每个实现类如果都想要相同的功能,就不需要重复代码,而是在接口进行定义即可。

默认方法在子类也可以被重写。

原文地址:https://www.cnblogs.com/wqbin/p/11197522.html