final在java中的用法

final在java中的用法

四种用法

  1. 修饰一个类
  2. 修饰一个方法
  3. 修饰一个局部变量
  4. 修饰一个成员变量

1.修饰一个类

public final class 类名称{
    ...
}

2.修饰一个成员变量

class Person{
//    final int height;  报错,必须赋初值
//    final类型的成员变量必须赋初值   
//    方式一:声明的时候直接赋值
      final int height=120//    方式二:构造器赋值 
      final int height;
      Person(int height){
          this.height=height;
      }      
}

作用:被final 修饰的成员变量一旦被赋值就不可以被改变

对于基本数据类型而言,变量的值不可变

对于引用类型,变量的地址不可变

说明:

1.被声明为final的成员变量必须被赋初值,否则 报错

2.有两种对成员变量进行赋初值的方式,且这两种方式只能存在一个;

  • 方式1:在声明时直接赋值
  • 方式2:在有参构造器中赋值,

3.修饰一个方法

修饰符 final 返回值类型 方法名称(参数列表){
	方法体
}

作用:该方法不能被重写

4.修饰一个局部变量

void setAge (int a) {
     final int dadAge;// [1]
//    dadAge = 1;// [2]
     final int age = a;
//     age += 1; // [3] 报错
     System.out.println(age);
//     System.out.println(dadAge); // [4] 报错
    }

当final关键字修饰一个局部变量时,该变量同样不可变。
注意:

[1] 可以不赋初值,编译器不会报错

[2] 也可以赋初值

[3] 报错,一旦被赋初值,便不可以被修改

[4] 报错,未赋初值不可直接被使用

说明:局部变量不可变意味着在当前执行该方法时,被final修饰的局部变量一旦被赋初值后便不可改变,但是方法结束后,局部变量就被销毁了

总结就是:

(1) 作用于类时,类不可被继承;
(2)作用于方法时,方法不可被重写;
(3) 作用于变量时,在该变量的生命周期内,一旦被赋初值后便不可被修改。
推论:
(1)abstract与final是天然的矛盾,因为抽象类就是需要被继承的,抽象方法就是需要被重写的,所以两个关键词不可同时使用;
(2)private与final关键字同时修饰方法时,IDEA会提示移除final关键字,因为private的可见性是当前类,所以天然就不可被子类重写,所以在修饰方法的层面上,private包含了final关键字的作用。

今天是持续写作的第 17 / 200 天。可以点赞、评论、收藏啦。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值