Java:final
final是访问控制中间修饰词。
final表示最终的,可以用于修饰类、变量、方法。
final类
1 public class Test { 2 public static void main(String[] args) { 3 4 } 5 } 6 7 final class Person { 8 9 } 10 11 // 编译错误,final类不允许被继承 12 class Chinese extends Person { 13 14 }
final变量
final变量的命名规范为全大写。
基本数据类型final变量
1 public class Test { 2 public static void main(String[] args) { 3 final int NUMBER = 100; 4 5 // 编译错误,基本数据类型final变量不允许改值 6 NUMBER = 200; 7 } 8 }
引用类型final变量
1 public class Test { 2 public static void main(String[] args) { 3 final People TOM = new People(); 4 5 // 编译通过,引用类型final变量允许修改内容 6 TOM.age = 20; 7 8 // 编译错误,引用类型final变量不允许修改引用地址 9 TOM = new People(); 10 } 11 } 12 13 class People { 14 public int age = 30; 15 }
声明final成员变量时必须初始化。
class Circle{ // final double PI; // 编译错误 final double PI = 3.1415926; // 编译通过 }
声明final局部变量时可不用马上初始化,但是不初始化不能使用该变量。
以第一次赋值为初始化,之后该变量可正常使用。
1 public class Test { 2 public static void main(String[] args) { 3 final String NAME; 4 System.out.println(NAME); // 编译错误,未初始化状态不能使用 5 NAME = "Tom"; // 编译通过,以第一次赋值为初始化 6 System.out.println(NAME); // 编译通过,已初始化可正常使用 7 NAME = "Lucy"; // 编译错误,不能改值 8 } 9 }
final方法
public class Test { public static void main(String[] args) { } } class Person { final void say() { } } class Chinese extends Person { // 编译错误,final方法不允许被子类重写 void say() { } }
Java工具类中的final类
String、Interger、Math等等。
浙公网安备 33010602011771号