Java 里的 final 关键字定义的变量:不能修改(只能给一次赋值);
例如:
public class A{
public final StringBuilder sb;
public A() {
sb=new StringBuilder("origin");
}
public A(String s) {
sb=new StringBuilder(s);
}
public final void print(){
//sb=new StringBuilder();//The final field A.sb cannot be assigned
System.out.println(sb.toString());
}
}
Java 里的 final 关键字定义的方法:不能被覆盖;
例如,一个匿名内部类继承上面的 A 类:
new A(){
public String s="A var";
@Override
public void print() { //Cannot override the final method from A,此处错误
//do sth
}
public void fun(){
System.out.println(s);
}
}.fun();