Java default 、final关键字

写在前面的话:

把这两个关键字放在一起讲,没什么特别用意,就是想聊聊这些关键字。我不要你觉得,我要我觉得,嗯,就是这样……

                                                                                             ——不积跬步无以至千里,不积小流无以至江海。


 

一、default 关键字

1、为什么?

答:现有一个接口A,实现类a、b、c、d均实现了A接口。A接口中有方法sayHello(),当因为业务需求,需要对sayHello()方法进行修改时,则只能分别修改a、b、c、d共计4个接口,若有更多的实现类,则修改更多。故default method被引入。

2、是什么?

答:文档中提到: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.

        即:默认方法能够向库中添加新的功能,并且能够确保与旧版本的兼容。

3、示例:

1) 此时不实现default方法体:

/****************************************************
 *
 * 汽车接口
 *
 *
 * @author Francis
 * @date 2019/8/26 10:37
 * @version 1.0
 **************************************************/
public interface Car {

    /**
     * 品牌
     */
    void brand();


    /**
     * 轮子数
     */
    default public void wheelCount(){
        System.out.println("有4个轮子");
    }

}

 

/****************************************************
 *
 * 迈腾汽车
 *
 *
 * @author Francis
 * @date 2019/8/26 10:39
 * @version 1.0
 **************************************************/
public class Magotan implements Car {


    @Override
    public void brand() {
        System.out.println("迈腾,大众旗下品牌");
    }
}
    @Test
    public void method4(){
        Car car = new Magotan();

        car.brand();
        car.wheelCount();

    }
------------------------测试开始------------------------
迈腾,大众旗下品牌
有4个轮子
------------------------测试结束------------------------

2)再用接口去实现default方法体:

/****************************************************
 *
 * 迈腾汽车
 *
 *
 * @author Francis
 * @date 2019/8/26 10:39
 * @version 1.0
 **************************************************/
public class Magotan implements Car {


    @Override
    public void brand() {
        System.out.println("迈腾,大众旗下品牌");
    }

    @Override
    public void wheelCount() {
        System.out.println("加备胎,有5个轮子");
    }
}
------------------------测试开始------------------------
迈腾,大众旗下品牌
加备胎,有5个轮子
------------------------测试结束------------------------

 

 

二、final 关键字

1、用法:

    1)修饰类该类不可被继承。该类成员变量根据实际需要设计为final;该类方法都会被隐式的指定为final方法。例如:工具类一般被设计为final类。如图:

 

    2)修饰方法被修饰的方法不可被重写。注:当方法被private修饰时,会被隐式的指定为final方法。

    3)修饰成员变量:

        a).必须赋予初始值,并且只能初始化一次。

        b).如果该成员变量是基本类型,则这个成员变量的值不能改变。

        c).如果该成员变量是引用类型,则这个成员变量引用的地址不能修改,但所指向的对象的内容是可改变的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值