总结:
1、final修饰的类无法被继承
2、final修饰的方法无法被覆盖
3、final修饰的局部变量一旦被赋值,无法被改变
4、final修饰的成员变量“显示的”初始化,在构造方法调用结束之前能赋值就ok
5、final修饰的成员变量一般和static联用
我们来一 一举栗子:
final修饰的方法无法被覆盖
class A{
public final void m1() {}
}
class B extends A{
public final void m1() {}
} // 编译不同通过
final修饰的局部变量一旦被赋值,无法被改变
class A {
public void m1() {
final int i;
i = 100;
// i = 200; 编译不通过
}
}
final修饰的成员变量“显示的”初始化,在构造方法调用结束之前能赋值就ok
class A{
// final int i; 编译不通过
final int i = 1;
final int k;
A(){
k = 2;
}
}
final修饰的成员变量一般和static联用,因为放在方法区,不消耗内存
class MyMath{
// 常量.java规范中要求所欲的常量“大写”
// 常量:值不可再改变的变量
public static final double PI = 3.14;
}
再举栗子:
public abstract class p{
// 入口
public static void main(String[] args) {
final Customer c = new Customer("JACK",15);
// c是final的,无法重新赋值
// c = new Customer("LUCY",20);
}
}
class Customer{
String name;
int age;
Customer(String name,int age){
this.name = name;
this.age = age;
}
}
网友评论