fianl关键字的作用
final代表最终的意思,可以修饰成员方法,成员变量,类
比如使用了模板设计,模板是不可以修改的,但是子类继承后是有可能修改模板的,所以在方法加上final就不可变了。
final修饰类、方法、变量的效果
- fianl修饰类:该类不能被继承(不能有子类,但是可以有父类)
- final修饰方法:该方法不能被重写
- final修饰变量:表明该变量是一个常量,不能再次赋值
- 变量是基本类型,不能改变的是值
- 变量是引用类型,不能改变的是地址值,但地址里面的内容是可以改变的
- fianl修饰成员变量必须在创建的时候赋值或者再构造方法结束前赋值
final修改常量:
修饰常量如果是一个单词所有字母需要大写,如果是多个单词,所有字母大写,但是单词和单词之间需要用_分割
演示:
public static void main(String[] args){
final Student s = new Student(23);
s = new Student(24); // 错误
s.setAge(24); // 正确
}
成员变量涉及到初始化的问题,初始化有显示初始化和构造器初始化,两者不可兼得。
- 显示初始化(定义时就赋值)
public class Student {
final int num = 10;
}
- 构造器初始化(在构造器中赋值)
public class Test {
private int num;
public ConstructTest() {
//通过构造器来初始化
num = 5;
}
}