现在的位置: 首页 > 综合 > 正文

final关键字理解

2014年09月05日 ⁄ 综合 ⁄ 共 810字 ⁄ 字号 评论关闭

Java关键字有“这是无法改变的”或者“终态”的含义,他可以修饰非抽象类、非抽象成员方法和变量

一、首先说一下final类:

final类不能被继承、没有子类,final类中的方法默认都是final的。

     原因在于final就有终态的意思了,而继承有着进化的意思,是子类继承父类是在父类的基础上进行拓展延伸。所以final类不能被继承。

二、final方法

final方法不能被子类的方法所覆盖,但可以被继承。

   使用final方法的原因有两个

    (1)、把方法锁定,防止任何继承类修改他的意义和实现

    (2)、高效,编译器在遇到调用final方法时会转入内嵌机制,大大提高执行效率。

三、final变量

final成员变量表示常量,只能被赋值一次,赋值后值不在改变。

final修饰的变量有三种:静态变量、实例变量、局部变量,分别表示三种类型的常量。

final对于常量来说意味着值不能改变,例如final  i  =100;   那么这个i的值永远都是100.

使用filal关键字修饰一个变量的时候,是指引用的变量不能变,引用变量所指向的对象中的 内容还是可以改变的。例如  如下语句:

final StringBuffer a=new StringBuffer("aaa");

执行如下语句的时候将报编译器错误:

a=new StringBuffer("");   因为它将变量指向的内存地址改变了    而final修饰的变量恰恰是不可改变变量所指向的内存地址。

但是,执行如下语句则可通过编译:

a.append("bbb");  因为他只是将指向对象的内容改变了 ,而没有改变该变量所指向的内存地址。

关于final修饰变量的理解  最简单的例子就是:我有一个老婆叫XXX,我老婆就是XXX了,这个人是不能变的,但是我老婆的身高和体重是可以改变的。

 

四、final参数

当函数的参数为final类型的 参数的时候你可以读取使用该参数,但是无法改变该参数的值。

 

【上篇】
【下篇】

抱歉!评论已关闭.