final关键字
不可改变。可以用于修饰类、方法和变量。
类: 被修饰的类,不能被继承。
方法:被修饰的方法,不能被重写。
变量:被修饰的变量,不能被重新赋值。
1.修饰类
不能被继承
格式:final class 类名 { }
2.修饰方法
不能被重写
格式:修饰符 final 返回值类型 方法名(参数列表){ //方法体 }
3.修饰局部变量
基本类型的局部变量,被final修饰后,只能赋值唯一一次,且不能再更改。
引用类型的局部变量,被final修饰后,只能指向一个对象,地址不能再更改,但是不影响对象内部的成员变量值的修改。
4.修饰成员变量
成员变量涉及到初始化的问题,初始化方式有两种,只能二选一:
1. final String USERNAME = "张三"; 用了final不会再默认给一个初值 所以必须赋初值
2.在构造方法中赋初值,而且在每个构造方法中都要赋初值。
被final修饰的常量名称,一般都有书写规范,所有字母都大写
权限修饰符
public protected (default) private
同一类中 √ √ √ √
同一包中 √ √ √
不同包的子类 √ √
不同包中的无关类 √
不同包的子类 是指 不在同一个包中 但有继承关系
不同包无关类 是指 不在同一个包中 也没有继承关系
default等同于不写权限修饰符
编写代码时,如果没有特殊的考虑,建议这样使用权限:
成员变量使用 private ,隐藏细节。
构造方法使用 public ,方便创建对象。
成员方法使用 public ,方便调用方法。