java中的关键字final用法剖析

2018-01-15 21:23刘志雄
世纪之星·交流版 2017年8期
关键词:变量方法

刘志雄

[摘 要]final关键字在java中的应用至关重要。使用final关键字可以使JVM优化变量、方法和类,在多线程环境下,可以进行安全的共享,减少了同步开销。本文结合简单实例对final关键字在变量、方法与类中定义的用法进行了深入的剖析。

[关键词]final;java;变量;方法;类

从英语单词方面来看final的含义,有“最终的”“不可更改的”“决定性的”等意思。在java中,其也保留了此含义。final关键字可用于修饰类、变量和方法,它有“这是无法改变的”或者“最终”或者“终结”的含义,因此被final修饰的类、变量和方法具有以下特性:

1.final修饰的类不能被继承。我们可以把这样的类叫做“最终类”。

2.final修饰的方法不能被子类重写。我们把它叫做“最终方法”。

3.final修饰的变量是常量,只能赋值一次。

接下来,我们分别从以上三个方面一一用简单实例来讲解final关键字的用法。

一、final在变量定义中的用法

用例如下:

class animal {

final String name;

public void f(){

System.out.print(“这只动物名字叫:”+name);

}

public static void main(String[] args){

animal aa=new animal( );

aa.f();

}}

对代码进行编译时,出现如下错误提示:

这是因为使用final关键字修饰成员变量时,虚拟机不会对其进行初始化。因此使用final修饰成员变量时,需要在定义变量的同时赋予一个初始值,下面将第2行代码修改为:

final String name = "猫"; 为final关键字修饰的name属性赋值。但是,如果我们在第4行代码前加上语句:name=”狗”;这时编译结果为:

从以上情况说明final修饰变量时,必须对变量进行初化,一旦初化,该变量的值不能被改变,即常量。

二、final在方法定义中的用法

用例如下:

class animal {

final String name="猫";

final public void f(){

System.out.print(name);}

class dog extends animal{

void f(){

System.out.print("狗叫汪汪汪");

} }

public static void main(String[] args) {

dog as=new dog();

as.f();} }

对代码进行编译时,出现如下错误提示:

这是因为f()方法被final修饰了,dog子类不能重写父类里的f()方法。可见,final修饰的方法是该类里的“终结”方法,不能被重写,但是可以继承使用,即子类可以调用父类里final修饰的方法。

三、final在类定义中的用法

用例如下:

final class animal {

final String name="猫";

final public void f(){

System.out.print(name);}

class dog extends animal{

}

public static void main(String[] args) {

dog as=new dog();

as.f();} }

对代码进行编译,错误提示为:

这是因为animal类用final修饰了,一个类一旦用final修饰,那么这个类就不用有子类了,即final修饰的类为“最终类”。

四、结语

由以上叙述可知:final修饰的变量表示常量,定义里就得初始化,且只能被赋值一次,赋值后值不再改变;final修饰的方法不能被子类来重写,但是可以被子类继承,即子类可以直接调用父类里final修饰的方法;final修饰的类不能被继承,即该类不可能有子类。

参考文献:

[1] http://www.importnew.com/7553.html.

[2] 高永强,Java编程艺术[M].北京:清华大学出版社,2009.

[3] 王善发,吴道荣,Java編程中static和final关键字的陷阱,保山学院学报,2012,31(5):19-22.

[4] 安博教育集团,Java核心技术[M].北京:电子工业出版社,2012.

基金项目:湖南省教育科学“十三五”规划2017年度课题:XJK17BGD083 。endprint

猜你喜欢
变量方法
抓住不变量解题
也谈分离变量
可能是方法不对
用对方法才能瘦
SL(3,3n)和SU(3,3n)的第一Cartan不变量
四大方法 教你不再“坐以待病”!
捕鱼
分离变量法:常见的通性通法