final关键字

1.final变量

final可以用来声明变量,一旦被final修饰,则该变量不可改变。

public class TestFinal {

    private String name;
    //用大写字母定义,中间使用下划线
    private final int AGE;
    //public static final修饰的变量只能在这里初始化
    public static final int MONEY=30;
    
    //两种构造方法赋值都可以
    public TestFinal(String name) {
        this.name=name;
        AGE=9;
    }

    public TestFinal(String name,int AGE) {
        this.name=name;
        this.AGE = AGE;
    }
}

final定义的实例域必须在构建对象时必须要初始化,否则会编译报错。初始化的方式一般有赋值和构造器中赋值两种。如果是public static final修饰的全局常量,则只能直接赋值,static优先于对象的构建。

2.final方法

被final修饰的方法不能被重写。

a)一个private方法会被隐式的指定为final方法

b)如果父类中有final方法,则不会被子类重写

final void test(){}

3.final类

定义为final的类不能被继承。

如果一个类在设计的时候不想被继承,并且不想被其他的类改动,那么可以将该类用final定义。比如工具类的定义,String就是不可变类。不可变类可以安全地在多个线程间共享其对象。

final class test{
}

4.总结

另外有一种说法是final是否对性能有提升,有些人认为可以,有些人认为不可以。

个人觉得主要还是final在设计上的优化。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值