final关键字

1.对于类而言,final可以让该类不可被继承,但可以实例化对象

 

2.对于方法来说,final可以让该方法不能被重写(覆盖),但可以重载

 

3.对于变量来说,final让变量的值不能被修改,即final变量是常量,要按照常量命名规范(字母大写,用下划线_连接),在①定义时   ②构造器中   ③代码块  这三个位置任选其一来进行常量初始化,但如果是static属性,那就只能是定义时和在代码块中初始化,因为构造器使用时已经是在新的对象空间中了,这不符合static的原则

 

 

经典面试题

final关键字的作用

 

注意,①只有final类的时候才不能被继承,至于final方法,final属性是可以被继承的,只是不能被重写(覆盖)和修改

     ②一般,类如果是final的,那么方法就没必要final了,因为别人根本继承不了你,更不用谈重写了,至于构造器是直接不能加final,语法会报错

     ③包装类(Integer,Boolean,Double,Float等都是final),String也是final

     ④如果我们只想获取以下某个静态变量的值,并且是不加载类的情况下获取,那么我们可以使用final + static 的组合,底层编译器会做优化处理

   

public class Test {
    public static void main(String[] args) {
        System.out.println(A.a);
    }
}


class A{
    public static  int a = 10;  //没有final
    static {
        System.out.println("静态代码块.......");
    }

}

运行结果是
静态代码块.......//类被加载
10
 
当我们加上final时
public class Test {
public static void main(String[] args) {
System.out.println(A.a);
}
}


class A{
public final static int a = 10;
static {
System.out.println("静态代码块.......");
}

}

运行结果

10 //类没有被加载

 

posted @ 2022-03-08 08:31  codemelo  阅读(35)  评论(0)    收藏  举报