暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

java高频面试之 final关键字详解

助力小白闯IT 2019-09-15
373

final关键字

修饰数据、方法、类

01

修饰数据

一、编译期常量:在编译期将变量值代入任何可能用到它的计算式中,在编译期执行计算式,减少运行时的负担。这类常量在java中必须是基本数据类型并且用final修饰,且定义的时候就需要初始化

二、final修饰基本数据类型,值不可以被修改

三、final修饰对象引用,引用不可以改去指向别的对象,但是引用本身的值是可以改变的

四、典型的对常量的定义的方法

    public static final int VALUE_ONE=3;

    public:可以用于包之外

    static:在内存中只有一份

    final:表示为常量,值不可以修改

    变量名大写,多个单词之间用下划线分割

五、final定义的变量的初始化的两种方法

    

方法一:定义的时候初始化

方法二:定义的时候不初始化,但是必须在构造方法中进行初始化,确保在使用这个常量前进行初始化

02

修饰方法

使用final修饰方法的原因:

一、防止继承类修改自己,不被子类重写


类中所有的private方法都隐式的指定为final;既:private 修饰方法和private final修饰方法效果是一样的


二:final修饰方法的重写问题:

带着这个问题看下面的代码:不是说的final修饰的方法不可以被重写呢,那为什么Son2这个子类的方法还可以这样写?这些方法是不是重写的方法呢?

测试一下:测试方法为将子类向上造型为父类,然后调用所谓的重写的方法,如果能调用出来则说明是重写的方法,否则就不是

由图可知:show方法不是重写的方法,而sayHi才是重写的方法。


三:可以通过注解 @Override在编译期进行判断是不是重写的方法

03

修饰类

final修饰类的两个目的

一、安全,不希望别人继承

二、确保这个类以后不再需要进行修改可以设置为final


因为final修饰的类不能被继承,所以类里面的方法也都隐式被final修饰不可以被重写


发现更多精彩

关注公众号




文章转载自助力小白闯IT,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论