final关键字详解

java中final也用来修饰3类东西:变量,方法和类。

1.变量

final修饰变量表示该变量是不可变的。例如 final int i =1;在程序中i的值就不允许改变了。比较容易混淆的是final用来修饰引用变量时,表示该引用变量是不可变的即引用变量指向的内存地址是不变的,但是被指的内存地址中的类是可以改变的。例如:

final MyClass myClass = new MyClass();

这样声明myClass后,其所指向的内存地址就固定了,但仍然可以改变myClass所引用对象的成员变量。如果试图重用myClass这个变量,让其引用另一个对象则会出错。

myClass = new MyClass();//error!!!

2.方法

final修饰方法时表示该方法是不能被子类重写的。

3.类

final修饰类时表示该类是不能被继承的,由于java的单继承关系,所以该类是继承关系链中的终端。

关于final的几个注意事项:

a、final变量必须在声明的时候初始化或是在构造函数中初始化;

b、接口中声明的所有变量都是final的;

c、final,finally,finalize的区别。final表示不可变,final表示必须执行的语句,finalize表示垃圾回收时执行的代码。

posted @ 2014-04-05 22:18  blackcat_333  阅读(115)  评论(0编辑  收藏  举报