1.final关键字的概念。
final关键字代表最终、不可改变的。
常见的四种用法:
(1)用来修饰一个类:那么这个类不能有任何的子类(一定有父类,最高父类Object)。
格式: public final class 类名称(){//...};
注意:如果一个类是final的,那么它的所有的成员方法都无法进行覆盖重写,因为没有子类给他覆盖重写。
(2)用来修饰一个方法:那么这个方法就是最终方法,也就是不能再被覆盖重写。
格式: 修饰符 final 返回值类型 方法名称(参数列表){//方法体}
注意:对于类和方法来说,abstract和final关键字不能同时使用(同时修饰),因为是矛盾的。
(3)用来修饰一个局部变量:数据不可变/地址值不可变
对于基本类型的局部变量,不可改说的是变量当中的数据不可变,也就是变量一旦赋值,之后再给这个变量赋值的操作都是错误的。
对于引用类型的局部变量,不可改说的是变量当中的地址值不可改,因为对于引用类型来说,在栈中存放的是地址值,但是可以改变在地址值中的内容。
(4)用来修饰一个成员变量:变量也是不可变的,但是和局部变量稍有区别。
由于成员变量具有默认值,所以在创建了final的变量后必须同时赋值,否则系统会给默认值,那么你也就是没办法赋正确的值给它了。
对于final的成员变量,要么使用直接赋值,要么通过构造方法来赋值,二者选其一。
如果要用构造方法去赋值,那么必须保证类中所有重载的构造方法,最终都会对final的成员变量进行赋值。
2.四种权限修饰符。
没有关系,针对第二、四种情况,访问带修饰符的成员变量,先要创建该成员变量所属的类的对象实例,然后在通过(.)访问成员变量。
如果有继承关系,访问时直接可以用(super)关键字访问成员变量。