黑马程序员技术交流社区

标题: 关于final关键字的疑问 [打印本页]

作者: wx_Zdt18Ww6    时间: 2016-4-11 10:30
标题: 关于final关键字的疑问
class Fu{
        final static int age = 1;
       
}

class Zi extends Fu{
         int age = 2;       
}
如上代码   子类继承了父类的age  为什么还能声明age变量  而不算同名变量   求解答
作者: 董改名    时间: 2016-4-11 11:10
final修饰的成员和成员变量,可以被继承。
作者: wx_Zdt18Ww6    时间: 2016-4-11 12:44
董改名 发表于 2016-4-11 11:10
final修饰的成员和成员变量,可以被继承。

子类继承父类 我举个例子
class Fu{
        int        a = 1;
}

class Zi{
        int a = 2;
}
为什么这样写  ,而不是在子类中直接 a = 2;   
这样写不相当于在同一类中{ int a = 1; int a = 2;}吗       我是这个问题
作者: 董改名    时间: 2016-4-11 13:52
wx_Zdt18Ww6 发表于 2016-4-11 12:44
子类继承父类 我举个例子
class Fu{
        int        a = 1;

子类确实继承了父类的成员变量a的值,但是子类中又定义了一下a变量,相当于父类的成员被覆盖了,所以不能算是修改final修饰的变量。如果在main函数中试图去修改的话,那肯定会报不能修改的错的。
作者: wx_Zdt18Ww6    时间: 2016-4-11 14:14
董改名 发表于 2016-4-11 13:52
子类确实继承了父类的成员变量a的值,但是子类中又定义了一下a变量,相当于父类的成员被覆盖了,所以不能 ...

可以理解为重写变量吗
作者: 董改名    时间: 2016-4-11 17:21
wx_Zdt18Ww6 发表于 2016-4-11 14:14
可以理解为重写变量吗

应该可以,覆盖和重写差不多吧
作者: wx_Zdt18Ww6    时间: 2016-4-11 19:20
董改名 发表于 2016-4-11 17:21
应该可以,覆盖和重写差不多吧

ok  多谢了
作者: wx_Zdt18Ww6    时间: 2016-4-11 19:22
董改名 发表于 2016-4-11 17:21
应该可以,覆盖和重写差不多吧

ok        多谢了
作者: qing31657552    时间: 2016-4-11 20:01
被final,修饰的变量是常亮
作者: 820306455    时间: 2016-4-11 20:21
你这是子父类中声明了相同名字的变量,是两个变量.你把Zi中的int去掉,就该报错了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2