final英文解释最终的,不可变的。
修饰类 该类不可被继承
final class A{
//A 是没有子孙的
}
class B extends A{
//错误的, 无法从最终类A进行继承
//B类继承A类 相当于对A类功能进行扩展
//如果不希望别人对A类进行扩展,可以给A类加final关键字,如String类
}
修饰方法 不可以被重写(不能与abstract修饰一个方法)
class C{
public final void doSome(){
System.out.println("C's doSome...")
}
}
class D extends C{
//错误,无法覆盖
/* public void doSome(){
System.out.println("D's doSome...")
} */
}
修饰变量,只能被初始化一次
//局部变量
public static void main(String[] args) {
// TODO Auto-generated method stub
final int k=100;
int i=5;
k=10;//报错
i=4;
}
//全局
class User{
final int age=10;
//final int age; 报错
final double weight;
//初始化未写weight报错
public User(){
this.weight=80;
}
}
为什么说字符串是不可变的?
final 修饰的char数组 -》 数组不指向新的数组
- final修饰String类 不能被其他人继承子类进行修改 1
- String类内没有任何一个修改数组内容的方法