final就如它的英语意思一样最后的,不可改变的。
final可以用来修饰类,方法和变量
1. 当final修饰类,该类之下不能再有子类的出现,该类也就不能被继承。如,String,System,StringBuffer这些类,他们被final修饰,都不能在被其他子类继承
2. final修饰方法,则此方法就不能再被重写。
class Circle{
public final void accountArea(){
System.out.println("输出面积");
}
}
class CircleTest extends Circle{
@Override
public void accountArea() {
// 此时被final修饰的方法就无法在被继承,
super.accountArea();
}
}
3. final修饰变量,此时的变量被称为常量,不能在被赋值。这里要注意的是,在给final修饰的变量赋值时,可以使用显示初始化,代码块中初始化,构造器初始化的方式,同时在方法中不能调用被final修饰的变量
public static void main(String[] args) {
final int NUM = 10;
// 此时NUM作为常量10出现,就不能在进行其他的赋值操作
NUM = NUM++;
}
final int WIDTH = 10; // 显示初始化可以
final int LEFT;// 代码块中
{
LEFT = 1;
}
final int RIGHT; // 构造器中初始化
public FinalTest() {
RIGHT = 20;
}
3.1 final修饰局部变量,当使用final修饰形参:表明此形参是一个常量,不能被赋值,在调用此方法时,给形参赋一个实值,一旦被赋值以后,只能在方法体内使用此形参,不能再被赋值
FinalTest test = new FinalTest();
// 调用此方法时,赋实值
test.show(10);
// final修饰形参变量,此时作为常量
public void show(final int num) {
System.out.println(num);
}
3.2 static final全局常量
static强调的静态,final表明只有一个,因此,static final一般常用来修饰属性和方法,修饰属性时,被称为全局常量。