final关键字

原创 2007年09月19日 14:40:00
 
final的字面意思是指无法改变,但是不同的情况下使用,会有些许区别
final成员变量
当final修饰一个类的成员变量时,表示该成员变量是常量,这句话需要解释一下:
如果该成员变量的类型是预定义类型,说明该变量值不可修改;如果该成员变量的类型是自定义类型,则该变量只是引用,那么该引用不能再指向别的对象,而对象的值却是可以修改的。
       注意:
1)当我们使用static final+预定义类型变量来表示一个静态常量的时候,变量名应该全部用大写字母,并且单词之间用下划线分隔。
       2)使用final修饰的成员变量一定要立刻初始化其值。
final参数
       final修饰形式参数,意味着函数内部不可以让参数引用其它的对象,但是如果对象提供了修改内部数据的方法比如setValue,仍然可以调用,下面的例子是合法的:
publicclass HelloDate
{
    publicstaticvoid main(String[] args)
{
       MyNumber n=new MyNumber(2);
       f(n);
    }
   
    publicstaticvoid f(final MyNumber n)
    {
       n.setValue(5);
       System.out.print(n.getValue());
    }
}
 
 
final成员函数
       final修饰成员函数可以防止派生类重写该函数。
       final修饰成员函数同时也就是向编译器发出内联的建议,但是就如同c++中的inline使用原则一样,通常不应该出于效率的原因发出这种建议,而是要等到性能分析器发现该成员函数因为频繁调用并且体积较小可以通过内联提高性能时才使用。当然作为底层类库的设计可能是个例外。
       通常情况下,如果没有充分的理由,尽量不要将一个成员函数设计为final。
       注意,private成员函数也是final成员函数,所以,虽然派生类可以提供一个和父类声明相同的成员函数,但是在java里,这不被视为重写,而被认为增加了一个新的成员函数,恰巧同名而已。这和c++不一样,c++中private虚函数仍然可以被子类继承并且重写,但是子类不能访问而已。

 

 

final
       使用final修饰类是为了阻止该类被继承,并且该类的所有成员函数都隐式的被定为final成员函数,也就是不允许被重写,所以没有必要手动为这些函数增加final关键字。
但是final类的成员变量没有自动成为final成员变量。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

c++11特性之override和final关键字

C++11之前,一直没有继承控制关键字。禁用一个类的进一步衍生是可能的但也很棘手。为避免用户在派生类中重载一个虚函数,你不得不向后考虑。C++ 11添加了两个继承控制关键字:override和fina...

C++11之final关键字

C++11之final关键字

如何在C++中实现java final标识的类的功能

Java中被final关键字标识的对象或者变量往往都意味着不能在运行时被动态更改,final的类则无法被继承。在C++中,变量可以用const声明为常量来表示相同的效果,而关于类的继承限制似乎没有相应...

C++ 11继承控制关键字:override(虚函数重载)和final(阻止继承、虚函数重载)

C++ 11添加了两个继承控制关键字:override和final。override确保在派生类中声明的重载函数跟基类的虚函数有相同的签名。final阻止类的进一步派生和虚函数的进一步重载。接下来让我...

final关键字和static_用法

  • 2011年11月25日 14:26
  • 38KB
  • 下载

Java final关键字

  • 2017年05月13日 23:57
  • 4KB
  • 下载

Java学习总结5——关键字的用法1(final关键字)

fianl关键字在java中有三种使用情况:数据,方法,类。 一、final数据     对基本类型使用fianl不能改变的是他的数值。而对于对象引用,不能改变的是他的引用,而对象本身是可...

Java中的final关键字

  • 2016年06月07日 12:22
  • 3KB
  • 下载

java final关键字

  • 2011年12月18日 11:45
  • 34KB
  • 下载

Java关键字final、static使用总结

原文链接http://lavasoft.blog.51cto.com/62575/18771/ 一、final         根据程序上下文环境,Java关键字final有“这是无法改变...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:final关键字
举报原因:
原因补充:

(最多只允许输入30个字)