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方法(我感觉抽象类和接口之间的距离更近了一步)。
输出控制台:
接着,我把eat方法在Cat类中实现了:
@Override
public void eat() {
	System.out.println("小家伙只吃猫粮!");
}

参考链接: https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值