final关键字
0. 前提
继承:子类可以在父类的基础上改写父类的内容。如方法重写
为了避免随便改写一些重要的或者固定的类,提供了final
关键字,修饰不可改变内容
1. final修饰的特点
final
:不可改变,可以用于修饰类、方法、变量
- 类:被修饰的类不可被继承
- 方法:被修饰的方法不可被重写
- 变量:被修饰的变量不可被重新赋值
2.final的使用方式
2.1 修饰类:
格式:final class ClassName{ }
public final class String
public final class Math
public final class Scanner
2.2 修饰方法
修饰符 final 返回值类型 方法名(参数列表){ }
如果重写final修饰的方法编译就会报错
2.3 修饰变量
2.3.1 局部变量-基本类型
- 只能赋值一次,不能再修改
final int a
final int b = 20
final int returncode = new Main(args).execute(out, err);
for (int i = 0; i <10 ; i++) {
final int c = i;
System.out.println(c);
}
这样不会报错,因为每次循环都是新的一个变量c
2.3.2 局部变量-引用类型
- 引用类型的局部变量,被修饰后只能指向一个对象,地址不能更改。
- 对象内部的成员变量值可以修改
final PrintStream err = new PrintStream(System.err, true);
2.3.3 成员变量
成员变量涉及初始化:
- 显示初始化:
public class User{
final String USERNAME = "小明";
private int age = 18
- 构造方法初始化
public class User{
final String USERNAME;
private int age;
public User(String USERNAME, int age){
this.USERNAME = username;
this.age = age;
}
}