final详解
final的含义?
final:java中的关键字,意为“终态的”或者“无法改变的”。可用来修饰类、变量、方法。
变量(成员变量、静态变量、局部变量)
注意:
1、final变量即为常量,通常常量名大写。
2、final成员变量必须在声明时初始化或在构造器中初始化。
3、静态final成员变量必须在声明时初始化。
4、局部变量必须在声明时赋值。
5、final变量赋值后不能被修改。
6、final修饰方法中的参数时,参数在方法体中不能重新赋值。
7、接口中的变量可以不用明确的声明为final,因为变量默认为public static final。
代码:
public class ClassA { public final String S1 = "this is S1 in ClassA";// 成员变量,声明时初始化 public final String S2;// 成员变量,在构造器中初始化 public static final String S3 = "this is S3 in ClassA";// 静态变量 public ClassA() { S2 = "this is S2 in ClassA"; } public String method1() { final String S = "this is method1 in ClassA";// 局部变量 return S; } public String method2(final String S) {// final修饰方法中的参数 return S; } }
测试1:
public class MainClass { public static void main(String[] args) { ClassA a1 = new ClassA(); System.out.println(a1.S1);// this is S1 in ClassA System.out.println(a1.S2);// this is S2 in ClassA System.out.println(a1.S3);// this is S3 in ClassA System.out.println(a1.method1());// this is method1 in ClassA System.out.println(a1.method2("test"));// test } }
方法
注意:
1、final修饰的方法不能被子类重写。
2、final不能用来修饰抽象方法。
代码:
public class ClassA { public final String method1() { return "this is method1 in ClassA"; } }
测试2:
public class MainClass { public static void main(String[] args) { ClassA a1 = new ClassA(); System.out.println(a1.method1());// this is method1 in ClassA } }
类
注意:
1、final修饰的类不能被继承。
2、final不能修饰抽象类和接口。
代码:
public final class ClassA { public String s1 = "this is s1 in ClassA"; }
测试3:
public class MainClass { public static void main(String[] args) { ClassA a1 = new ClassA(); System.out.println(a1.s1);// this is s1 in ClassA } }