final:最终的
一、final可以修饰类、方法、变量
二、final修饰类:最终的类,此类不能被其他类继承。比如:String类,System类,StringBuffer类
三、final修饰方法:最终的方法,此方法不可以被重写。比如:Object类中的getClass()方法
四、修饰变量:最终的变量,此变量成为一个常量。类似于C/C++的const
1.final修饰属性:可以赋值的位置:显式初始化、代码块中初始化、构造器中初始化。不能通过set方法或者“对象.属性”进行赋值
class A{
final int A1 = 0;//显式初始化
final int A2;
final int A3;
{
A2 = 1;//代码块中初始化
}
A(int num){
A3 = num;//构造器中初始化
}
}
2.final修饰局部变量:是一个常量,不能修改。当final修饰的是形参时,表明此形参是常量,当调用此方法时,给常量赋一个实参,一旦赋值后,只能在方法体内使用形参,不能修改形参。
class Person{public int i;}
public void add(final Person p) {
p.i++;//这个没问题,因为final修饰的是p不是i,p的地址没变就可以,i变不变都行。若是在方法中有p=new Person();则出错
}