Java8新特性 default关键字

引言:

        在查看 Enumeration接口源码的时候,发现新增了一个方法,这个方法是有方法体的,并且用 default修饰的。这个修饰符看起来很陌生,查阅文档后,大概了解了些。
文档中说: default methods enable you to add new functionality to the interfaces of your libraries and ensure binary compatibility with code written for older versions of those interfaces.
意思是默认方法能够向库的接口添加新功能,并确保与为这些接口的旧版本编写的代码兼容。并且不用在其子类进行逐个实现。Enumeration有94个子类,如果逐个实现真是痛苦。    

实践:

        动物接口:

public interface Animal {

    /**
     * 活动
     * */
    void play();

    /**
     * 进食
     * */
    default public void eat(){
        System.out.println("它什么都吃!");
    }

}
在接口中编写default修饰的方法时,可以有方法体,并且 必须有方法体 ! ! !
Cat类,实现Animal接口:
public class Cat implements Animal{

    @Override
    public void play() {
        System.out.println("这只猫在睡懒觉!");
    }

    public static void main(String[] args) {
        Animal cat = new Cat();
        cat.eat();
        cat.play();
    }
}
这时,我没有实现eat方法(我感觉抽象类和接口之间的距离更近了一步)。
输出控制台:
Java8新特性 default关键字_第1张图片
接着,我把eat方法在Cat类中实现了:
@Override
public void eat() {
	System.out.println("小家伙只吃猫粮!");
}
Java8新特性 default关键字_第2张图片
参考链接: https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html

你可能感兴趣的:(Java)