黑马程序员 java关键字final

来源:互联网 发布:u盘未格式化 数据恢复 编辑:程序博客网 时间:2024/06/05 14:41

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------


final是一个修饰符

特点:

(1)可以修饰类,函数,变量。

(2)被final修饰的类不可以被继承。

 

用final修饰类是为了避免被继承,被子类复写方法。

Demo被final修饰,如果被继承,编译出错

如下代码:

 
(3)被final修饰的方法不可以被复写
代码:
 
class Demo{final void show1() //不允许被复写{}void show2(){}}class SubDemo extends Demo{void show1(){}}
 编译结果:

FinalDemo.java:21: 错误: SubDemo中的show1()无法覆盖Demo中的show1()
        void show1(){}
             ^
  被覆盖的方法为final
1 个错误

 

(4)被final修饰的变量是一个常量只能赋值一次,final既可以修饰成员变量,又可以修饰局部变量
代码:
class Demo{final int x = 3;// 成员变量的值终生为3void show1() {}void show2(){final int y = 4; // 局部变量的值终生为4y = 9;          //这句编译会出错}}
编译结果:
 
FinalDemo.java:20: 错误: 无法为最终变量y分配值
                y = 9;          //这句编译会出错
                ^
1 个错误
 
应用:
当在描述事物时,一些数据的出现值是固定的,那么这时为了增强阅读性,都给这些值起个名字,方便于阅读。
而这个值不需要改变,所以加上final修饰。
如: 
public static final double PI = 3.14;  //圆周率  全局常量final double MY_PI = 3.14;  //当多个单词构成常量名,单词间用下划线连接

 (5)内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量

 

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

 
 
原创粉丝点击