用于修饰类、方法、成员变量、局部变量。
1.修饰类:不能被其他类继承
2.修饰方法:不能被子类重写
3.修饰局部变量(也包括形参):赋值后不能改变
4.修饰成员变量:
(1)在声明时同时赋值,往往与static 一起使用
static final int a=10; //最好用static进行修饰,表示在整个系统(内存)中只有一份
(2)声明时不赋值,必须在构造方法中逐一赋值
public class A {
static final int a=10; //第一种赋值方式
final int n; //第二种赋值方式
public A() {
n=0;
}
public A(int m) {
n=m;
}
public final void Eat(){
System.out.println("吃东西");
}
public void play(final int c){
final float b=10.1f;
/*b=5.2;*/ //局部变量被final修饰后,值不能改变
/*c=10;*/ //形参被final修饰后,值也不能改变
}
}
public class B extends A{
/*@Override 被final修饰的方法不能被子类重写
public void Eat() {
super.Eat();
}*/
public static void main(String[] args) {
new A(5); 每创建新的对象,就要给n赋值,表示第二种赋值方式在每个对象中都有一份
}
}