final:最终
使修饰的类,成员等具有最终属性(就没法改了)
1.从继承的弊端说起
打破了封装性。父类的功能可以被子类重写。
如何解决:
可以不让其他类继承该类,就不会有重写了
如何实现:
用final修饰词
2.final特点
1)可以修饰类,方法,变量(成员,局部,静态)
2)final修饰的类不能被继承
举例
final class Fu{
private void show1(){
System.out.println("show1 run");
}
}
class Zi extends Fu{
public void show2(){
System.out.println("show2 run");
}
}
会出现编译错误:
Demo.java:6: 错误: 无法从最终Fu进行继承
class Zi extends Fu{
^
1 个错误
3)如果在类中部分可以重写,部分不可以,那么用final修饰方法
举例
class Fu{
final void show(){
System.out.println("show1 run");
}
}
class Zi extends Fu{
void show(){
System.out.println("show2 run");
}
}
编译错误:
Demo.java:7: 错误: Zi中的show()无法覆盖Fu中的show()
void show(){
^
被覆盖的方法为final
1 个错误
3.final 使用时注意
当一个变量,类似于 PI 这种,需要保证这个变量值不变,要加上final修饰,变成一个“常量”。
并且,被final修饰的常量名字母大写,多个单词之间用“_”链接