为了账号安全,请及时绑定邮箱和手机立即绑定

关于final的一些问题

我在父类中定义了final age=20;又在子类中定义了 int age=10;为什么可以通过编译的,不是说final关键字定义的变量是不可以在重新赋值了吗

正在回答

2 回答

你在父类中定义的age跟你在子类中定义的age是两个不一样的变量,作用域不一样。就好比你跟你爸一人有一杯优乐美,他的优乐美他自己喝,你的优乐美是给你喝的。两杯不一样的优乐美!虽然他们的牌子是一样的。

你爸给他的优乐加了一把锁,然后把钥匙扔了,这样就再也没有人能动他杯子里的优乐美了,就好比final。。。。

然而这并不影响你喝你的优乐美。。。

顺便问一句,你喜欢和优乐美还是香飘飘?原味还是草莓味。。。。

2 回复 有任何疑惑可以回复我~
#1

0821

大神啊
2016-12-31 回复 有任何疑惑可以回复我~

我经过了测试,发现在子类中声明的同名变量和父类中的同名变量是完全不一样的两个量,比如父类的变量是final int A=10; 子类是int A=20; 则声明一个子类的时候,这个A指的是这个20,而且因为没有final,这个A也是可以修改的。这个性质在类和它的方法中也存在。

0 回复 有任何疑惑可以回复我~
#1

0821

子类中int A=20,说明你已声明并初始化过了,是一个在子类中新创建的变量;如果你在子类中直接打A=20,这就是继承,父类中已fina过了,不允许继承并修改,系统就会报错,A下面给你划红线。
2016-12-31 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530553    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

关于final的一些问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信