final 关键字
在Java中final关键字在不同的场合有不同的作用。
1.类上使用final
类上的final表示此类不允许其他类进行继承(“绝后了”)。
class Fu{
}
final class Zi extends Fu{ //Zi已经表示不允许被别人继承。也就是说不能成为别人的父类
}
//不允许:
class Sun extends Zi{
}
2.在成员方法生使用final
成员方法上的final表示此方法不允许被子类所覆盖/重写。
class Fu{
public void m1(){
}
public final void m2(){
}
}
class Zi extends Fu{
public void m1(){
//可以实现的
}
public void m2(){
//不允许
}
}
3.在变量上使用final
当final出现在变量上时,表示这个变量是一个常量(必须且也只能赋值一次)
当他修饰成员变量的时候,必须明确赋值一次(不能使用默认值)
int a = 10;
a = 20;
final int b = 10;
b = 20;//报错
//其实当它修饰引用类型时,表示地址不能变,但是内容可以变。
final Person p = new Person();
p = new Person();//不允许,改地址不行。
p.setName("李四");
p.setName("王八");