Java 面向对象之final
final:不可改变。可以⽤于修饰类、⽅法和变量。
类:被修饰的类,不能被继承。
⽅法:被修饰的⽅法,不能被重写。
变量:被修饰的变量,不能被重新赋值。
局部变量 – 引⽤类型
引⽤类型的局部变量,被 final 修饰后,只能指向⼀个对象,地址不能再更改。但是不影响
对象内部的成员变量值的修改,代码如下:
public class FinalDemo2 {
public static void main(String[] args) {
// 创建 User 对象
final User u = new User();
// 创建 另⼀个 User对象
u = new User(); // 报错,指向了新的对象,地址值改变。
// 调⽤setName⽅法
u.setName("张三"); // 可以修改
}
}
成员变量
成员变量涉及到初始化的问题,初始化⽅式有两种,只能⼆选⼀:
显示初始化:
public class User {
final String USERNAME = "张三";
private int age;
}
构造⽅法初始化:
public class User {
final String USERNAME ;
private int age;
public User(String username, int age) {
this.USERNAME = username;
this.age = age;
}
}
public protected default private
同⼀类中 √ √ √ √
同⼀包中(⼦类与⽆关类) √ √ √
不同包的⼦类 √ √
不同包中的⽆关类 √
被 final 修饰的常量名称,⼀般都有书写规范,所有字⺟都⼤写