1.abstract
和 final
不能同时存在,因为自相矛盾,abstract
表示抽象,所以 abstract
修饰的类必须被实现才有意义,而 abstract
修饰的方法必须被覆盖重写(即实现)才有意义;但是 final
却表示最终的,不可改变的,所以两者在一起是互相矛盾的。
2.final
修饰的局部变量,表示该局部变量只能赋值一次,已经赋值了就不能修改了。一次赋值,终生不变。
final int i;
i = 20; // 第一次赋值,这是正确的
3.final 修饰的成员变量,要么在声明的时候直接赋值,要么通过构造方法赋值,二者选一。如果是通过构造方法赋值,那么必须所有的构造器方法都要对 final 修饰的成员变量赋值
4.final 修饰的类不能被继承,不能有子类
5.final 修饰的成员方法不能被覆盖重写
6.final 修饰的变量,初始化以后不允许修改。final static 修饰的变量也叫常量,final 修饰变量表示“不能改”,static 修饰变量表示属于类的,仅此一份。