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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 晚上没饭吃 中级黑马   /  2015-8-4 19:49  /  302 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

final关键字
在继承中很多时候,有写内容,是不能被子类重写的,而我们又知道。只要方法声明子类就可以重写父类方法,这样就让父类的方法不安全了。

针对这个情况,我们如果能做一个标记,告诉别人注意这个方法时不可以被重写了,那么这个标记就是final。

概述

final关键字:最终的意思。它可以修饰类,修饰成员变量,修饰成员变量。
作用

final 放在类前面 如果某个类在定义时,前面有修饰词final,则该类不能被继承
final 放在属性前面 属性声明时,如果前面有修饰词final关键字,则该属性值不能被更改,即此时该属性为常量

final放在方法前面 如果某个方法在定义时,前面有修饰词final,该方法可以被调用,不能重写

static和final关键字区别

很多时候会容易把static和final关键字混淆,static作用于成员变量用来表示只保存一份副本,而final的作用是用来保证变量不可变。
面试题

fianl,finally,finalize的区别
前面2个好说,后面一个是String的来讲回收器。一般不常用
finally里面的代码真的永远会执行,但是有一个特殊情况:在代码执行到finally之前,jvm就退出了。

如果 return在finally之前,finally还会执行吗

会执行,在return只间执行。如下代码 public class Replace { public static void main(String[] args) { method(); }
private static int method() {
    // TODO Auto-generated method stub
    int a=10;
    try{
        System.out.println(a/0);
        System.out.println("a="+a);
    }catch(ArithmeticException e){
        a=20;
        return a;
    }finally{
        System.out.println("a="+a);
        a=30;
    }
    return a;
}
}
上面的代码显示的是,代码先运行到return的时候看到还有finally,所以就执行了finally语句执行完毕后再返回到return,返回之前的a的值,而不是finally里面的a的值,结果是 a=20;

5 个回复

倒序浏览
finally的执行顺序问题
回复 使用道具 举报
总结得很好嘛
回复 使用道具 举报
支持,顶!!!!
回复 使用道具 举报
final的生存周期是什么范围
回复 使用道具 举报
好 受教了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马