记录一下今天复习的final修饰符,其中 final类的成员方法隐式被final修饰部分 仅代表我个人理解
总结如下:
final有三种使用方法:
1、final修饰类 final修饰类表示这个类不能被继承, 这个类的成员变量可以选择性得用final修饰, 类的成员方法在继承角度来说可以理解为默认被final修饰, 因为java之前是可以用final使方法变为内嵌调用,以此来提高方法效率;
2、final修饰方法 final修饰方法表示这个方法被锁定,不能被任何类修改, 当一个方法被private修饰,则会被隐式得指定为final方法,即不能被继承super调用;
3、final修饰变量 final修饰变量分为两种,一种是修饰基本类型,一种是修饰引用类型, 当修饰基础类型的时候,第一次赋值后就不能被更改, 当修饰引用类型的时候,第一次指向后就不能修改其对象引用,即一直引用这一个对象,但是可以修改对象本身;
具体案例:
一、修饰类
当它修饰类的时候,表明此类不允许被其他类继承;
在被final修饰的类里面,所有成员变量都是可以选择性得使用final,但是被final修饰的成员变量必须立即赋值;
但是在被final修饰的类里,所有的成员方法都是会被隐式得加上final;这句话来自《java编程思想》一书,我验证了,但是编译后的class一样是不带final的,对于这句话我是这么理解的:因为Java之前版本是可以使用final使方法变为内嵌调用,以此来提升方法的效率,但是现在Java已经不需要这么写了;
二、修饰方法
当它修饰方法的时候,表示这个方法被锁定,不能被任何类修改;
而且当一个方法被私有化(被private修饰)的时候,则该方法会被隐式得指定为final,即不能在其子类被super调用;
三、修饰变量
final修饰变量分为两种情况,一个是修饰基础类型,一种是修饰引用类型;
当修饰基础类型的时候,第一次赋值后将不能更改变量的值;
当修饰引用类型的时候,第一次指向后就不能修改其对象引用,即一直引用这一个对象,但是可以修改对象本身;