JAVA从菜鸟到进阶(七)——final关键字的注意事项(涉及final在单例模式的作用)

一 final关键字:
①final修饰的类不能被继承
②final修饰的方法不能被重写
如果父类用private final来修饰,private修饰的方法不能在本类外使用,如果子类方法与父类方法同名,此时子类是不知道父类用同名的方法的,子类相当于自己又创建了一个新的方法。
③final修饰的变量是常量,在类的加载完成时(在创建对象之前)就已经赋值
④final修饰的引用类型变量,仅仅保证地址值不变,而地址值的内容可以改变。
因为引用类型指向的是一个地址,就像你只记住了别人的门牌号,而别人家的东西你不知道。
注意:
(1)final修饰的变量在类加载完成时就已经赋值,且只能赋值一次,不能改变。
(2)final修饰而不被static修饰的变量,可以在构造代码块,静态代码块,构造函数,直接赋值法进行赋值。
final’修饰同时被static修饰的变量,可以在静态代码块,直接赋值法进行赋值
二.final在单例模式中的应用
饿汉式

class Single
{
    private static final s=new Single();
    private Single(){}
    public static Single getInstance()
    {
       return s;
    }
]

懒汉式

class Single2
{
    private static s=null;
    private Single2(){}
    public static Single2 getInstance()
    {
        if(s==null)
        {
                 s=new Single2();
                 return s;
          }
    
}
}

为什么饿汗式用final而懒汉式不用呢?
因为用final修饰的变量必须在类加载完成时就已经进行赋值。而如果在懒汉式中用final(在初始化进行时就必须赋值)就不是懒汉式了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值