1、final修饰变量:表示该变量一旦被初始化值之后就不可能被改变。
a、如果修饰的是成员变量,则必须显示初始化值,而局部变量则无此限制。
b、如果是基本类型,则基本类型的值不能发生变化;
c、如果是引用类型,其引用地址不会发生变化,但该对象的堆内存的值可以发生变化。
public final class Test { public static final String str="必须显示初始化"; public static void main(String args[]){ final User u; User u2 = new User(); u2.setName("1"); u=u2; System.out.println(u.getName()); } }
2、final修饰方法:表示该方法不能被重写。如果不希望子类重写父类的方法时,可以使用。
延伸:template method设计模式,在父类中定义程序执行的框架。
3、final修饰类:表示该类不能被继承。