码迷,mamicode.com
首页 > 编程语言 > 详细

java中final关键字

时间:2019-09-03 22:22:17      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:允许   带来   重写   nbsp   性能提升   定义   内容   类型   静态绑定   

一、final关键字的含义

final是Java中的一个保留关键字,它可以标记在成员变量、方法、类以及本地变量上。一旦我们将某个对象声明为了final的,那么我们将不能再改变这个对象的引用了。如果我们尝试将被修饰为final的对象重新赋值,编译器就会报错。

二、用法

1.修饰变量

final修饰在成员变量或者局部变量上,那么我们可以称这个变量是final变量,如果我们将被final修饰的变量重新赋值,编译器就会报错

2.修饰方法

被final所修饰的方法将无法被子类重写。

使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。” -- 摘自《Java编程思想》

因此如果你认为一个方法的功能已经足够完整了,子类中不需要改变的话,你可以声明此方法为final。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定(正如编程思想中所提到的,在现在几版较新的JDK中,已经几乎没有性能差别了)。

3.修饰类

如果某个类被final所修饰,那么表明这个的功能通常是完整的;该类将不能被继承。并且final类的所有方法都会被隐式的修饰成final。

 

4.ps:匿名类中的所有变量都必须是final的。

 

static修饰的方法:
1、父类中的静态方法可以被继承、但不能被子类重写。
2、如果在子类中写一个和父类中一样的静态方法,那么该静态方法由该子类特有,两者不构成重写关系。
final修饰:
1、修饰类表示不允许被继承。
2、修饰方法表示不允许被子类重写,但是可以被子类继承,不能修饰构造方法。
3、修饰变量表示不允许被修改
    a)方法内部的局部变量,使用前被赋值即可(只能赋值一次),没有必要非得初始化。
    b)类中的成员变量(如果没有在定义时候初始化,那么只能在构造代码块中或者构造方法中赋值)
    c)基本数据类型的变量(初始化赋值之后不能更改)
    d)引用数据类型的变量(初始化之后不能再指向另外一个对象,但对象的内容是可以变的)

 

java中final关键字

标签:允许   带来   重写   nbsp   性能提升   定义   内容   类型   静态绑定   

原文地址:https://www.cnblogs.com/girl1314/p/11455755.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!