问答详情
源自:9-5 Java 中的 final 的使用

关于final的一些问题

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

提问者:慕神7194819 2015-10-25 11:22

个回答

  • mum8u6
    2015-11-06 14:11:08

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

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

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

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

  • 任e逍遥
    2015-10-28 09:12:02

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