final


可以修饰变量(各种变量)、方法、类。
final与abstract是互斥:不可能同时出现。

final修饰变量

该变量被赋初始值之后,不能重新被赋值!
final修饰的变量必须被显式赋值,且只能赋值一次。

final修饰成员变量

  • 非final的成员变量:程序员可以不显式指定初始值,系统会为之分配默认初始值,初始值分配规则与数组元素的初始值规则完全相同

  • final的成员变量:程序员必须显式指定初始值。

  • final实例变量
    必须显式指定初始值。只能在以下3个位置的其中一个指定:
    ①定义时指定初始值
    ②实例初始化块
    ③构造器
    这3个位置本质上其实只有一个:构造器

  • final类变量
    必须显式指定初始值。只能在以下2个位置的其中一个指定:
    ①定义时指定初始值
    ② 类初始化块
    这2个位置本质上其实只有一个:类初始化块。

  • final修饰局部变量
    ①非static的局部变量,程序员必须先指定初始值,然后才能使用。
    ② final的局部变量,程序员必须先指定初始值,然后才能使用;final局部变量不能被重新赋值。

  • final修饰的时引用类型的变量
    final只保证该引用变量本身不会被重新赋值,该变量所引用的对象完全可以被修改。

  • final修饰的“宏替换”的变量
    如果一个变量满足以下3个条件:
    ①变量有final修饰
    ②声明变量时指定了初始值
    ③变量的初始值可以在编译时确定(初始值的表达式中没有变量、方法调用等)
    这个变量就会消失,所有出现该变量的地方,在编译时就会替换成该变量的值。

final修饰方法

  • 表明该方法不能被子类重写。
  • 但该方法可以被重载。
  • 也可以被子类调用。
    【备注:】private方法已经被隐藏在类的内部,子类无法访问该方法,因此不可能被重写。
    final修饰private纯属多余

final修饰类

表明该类不能派生子类。
jdk里很多类都是final:String、Math、System
Object不可能是final类,因为它是所有类的祖先。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值