1、关于final关键字常见误区

1、final在修饰类时,不能被其他类继承,否则编译错误Cannot inherit from final ‘com.bjpowernode.day308.Fu’
在这里插入图片描述
2、final在修饰成员变量时,称为常量。系统不会再自动赋于其默认值,必须手动给其赋初始值才行。否则编译错误Variable ‘A’ might not have been initialized 。
手动赋值有两种情况
(1)直接在定义变量时 赋值

public final class Fu {
    final  int A=10;
}

(2)在构造方法中为这个常量初始化赋值。

public final class Fu {
    final  int A;
    public Fu(int a) {
        A = a;
    }
}

但值得注意的是,如果代码中又写了一个无参的构造方法,则在无参构造方法中也要手动赋值,也就是说,必须保证在所有情况下,
这个常量都能被赋上值才行。
3、final 修饰局部变量 ,可以先声明不赋值 如下。

class Zi extends Fu{
    public static void main(String[] args) {
        final int a;
    }
}

但值得注意的是 此种情况下 final修饰后 不能这样写 会编译错误 提示为初始化a

class Zi extends Fu{
    public static void main(String[] args) {
        final int a=10;
        a=a;//初始化错误
    }
}

如果去掉final 则不会报错,因为a可以再次被赋值

class Zi extends Fu{
    public static void main(String[] args) {
         int a=10;
         a=a;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值