Java基础:【final】关键字修饰的东西是最终的、不可改变的

final 代表最终的、不可变的

四种常见用法:

  1. 修饰一个
    不能有任何子类(太监类),因此该类的成员方法都不能被覆盖重写。
    这里可以看出final和abstract是矛盾的,不能同时出现的。
    一用final修饰,类的香火就断了(不能有儿子了)。

  2. 修饰一个方法
    最终方法,该方法不能被覆盖重写。

  3. 修饰一个局部变量
    一次赋值,终生不变。
    对于基本数据类型:终生不变指的是数据不可变,final int num=6;,当然也可以先int num,再赋值为6。但之后不能再对num赋值,哪怕再赋值6也不行,你不要以为编译器很闲,总之只能赋一次;
    对于引用数据类型:终生不变指的是地址不可变,Student stu1=new Student(name:“小明”);然后stu1=new Student(name:“小红”);会发现stu1指向的地址发生改变。sout(stu1)会打印小红的地址。
    但如果写 final Student stu1=new Student(name:“小明”);就不能再向上面一样改动引用类型变量。
    注意 final 仅仅让地址值不可变,不影响用stu1.setName(“老明”)等操作。

  4. 修饰一个成员变量
    赋值后同样也不能变了。另外要注意的是,由于成员变量有默认值,一旦用 final 修饰,必须手动赋值,不再会给默认值了(因为给默认值也视作赋值,而默认值如果变为不可变是没有意义的。(比如给姓名赋值为null),所以就不给默认值了)
    对于 final 修饰的成员变量,要么直接赋值(private final String name = “老王” ),要么通过构造方法赋值,二选一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值