---------------------- <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;// 成员变量的值终生为3
void show1() {}
void show2()
{
final int y = 4; // 局部变量的值终生为4
y = 9; //这句编译会出错
}
}
编译结果:
FinalDemo.java:20: 错误: 无法为最终变量y分配值
y = 9; //这句编译会出错
^
1 个错误
y = 9; //这句编译会出错
^
1 个错误
应用:
当在描述事物时,一些数据的出现值是固定的,那么这时为了增强阅读性,都给这些值起个名字,方便于阅读。
而这个值不需要改变,所以加上final修饰。
当在描述事物时,一些数据的出现值是固定的,那么这时为了增强阅读性,都给这些值起个名字,方便于阅读。
而这个值不需要改变,所以加上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>、期待与您交流! ----------------------