final代表最终,不可改变,可修饰类、成员方法、成员变量、局部变量
一、final的修饰
1、final修饰类
public final class MyClassFinal {
public void method(){
System.out.println("被final修饰的类");
}
}
是太监类,没有任何子类,成员方法无法被覆盖重写
2、final修饰成员方法
无法被子类重写(否则方法体会发生改变)
注:类与方法中,abstract与final不能同时使用,矛盾
3、修饰成员变量
只可赋值一次
final int num;//错误写法
num=3;
错误!因为成员变量有默认值,但是局部变量可以这样写
4、修饰局部变量
在方法里赋值
注意:
(1)使用final后,基本类型,数值不变;引用类型,地址值不变
但是,地址值所指向的对象可以变
(2)成员变量有默认值,用了final之后必须手动赋值,局部变量可以先不手动
(3)final修饰的成员变量,要么直接复制,要么通过构造函数,二选一
private final int num;
//如果不直接赋值的话,就用空参构造方法赋
public MyFeild2Final() {
num = 5;
}
(4)保证类中所有重载构造方法都会对final修饰的变量进行赋值
网友评论