A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Lex 中级黑马   /  2014-5-31 17:13  /  1281 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Lex 于 2014-6-1 19:15 编辑

进来的总结一下final的用武之地吧:D

5 个回复

倒序浏览
修饰的变量只能被赋值一次,修饰的方法不能被覆盖,修饰的类不能被继承,内部类要访问外部类的成员变量时,要有final修饰
回复 使用道具 举报
1.final修饰类:表示该类不可继承
final不能修饰interface接口
2.final修饰方法:表示该方法不能被子类覆盖(即子类不能重写父类的final方法,可以继承)
final不能修饰构造函数
3.final修饰字段属性:表示属性值第一次初始化后不能被修改
final属性可以直接初始化或在构造函数中初始化
如果属性是直接初始化,则其值不能被其它函数(包括构造函数)修改
4.final修饰函数参数
参数值不能被函数修改
5.final修饰函数中的局部变量
局部变量被第一次初始化后不能被修改
public void hello() {
final String name;
name = "hi";       //ok
name = "hello";    //error
}
使用final的意义:
第一,为方法“上锁”,防止任何继承类改变它的本来含义和实现。设计程序时,若希望一个方法的行为在继承期间保持不变,而且不可被覆盖或改写,就可以采取这种做法。
第二,提高程序执行的效率,将一个方法设成final后,编译器就可以把对那个方法的所有调用都置入“嵌入”调用里(内嵌机制)。
回复 使用道具 举报
总结的全了吧?这些东西面试的时候,老师估计会问
回复 使用道具 举报
Finle修饰符的总结
A. 可以修饰具备变量
   只能赋值一次,变量终身不变,其实就是常量

B. 可以修斯和成员变量
   final锁住的不是内存默认值
   final修饰的成员变量,可以在构造方法中赋值
   但是不可以在普通方法中赋值
   成员变量属于对象的,构造方法运行是在建立对象过程中的事情
   普通方法运行,是对象已经建立完成了

C. 可以修饰成员方法
   修饰后,这个方法变成最终方法,不能被子类重写

D. 可以修饰类
   类变成最终类,没有子类了
回复 使用道具 举报 1 0
fenzheng 发表于 2014-5-31 17:57
1.final修饰类:表示该类不可继承
final不能修饰interface接口
2.final修饰方法:表示该方法不能被子类覆盖( ...

”局部内部类访问局部变量,需要将局部变量定义为final“怎么解释?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马