黑马程序员技术交流社区

标题: final关键字 [打印本页]

作者: 晚上没饭吃    时间: 2015-8-4 19:49
标题: final关键字
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;
作者: 修道解厄    时间: 2015-8-6 23:25
finally的执行顺序问题
作者: 愤怒的哈博兔    时间: 2015-8-6 23:52
总结得很好嘛
作者: 13414309233F    时间: 2015-8-7 00:07
支持,顶!!!!
作者: boboyuwu    时间: 2015-8-7 12:39
final的生存周期是什么范围
作者: xiao_D    时间: 2015-8-13 11:05
好 受教了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2