黑马程序员技术交流社区

标题: 小问题 [打印本页]

作者: 张玉建    时间: 2013-9-20 00:35
标题: 小问题
本帖最后由 杨增坤 于 2013-9-22 21:03 编辑

class dome45
{
public static void main(String[] args)
{
     zi z= new zi();
     z.show();
     System.out.println(z.num);
}
}
class fu
{
final int num=4;
}
class zi extends fu
{
int num= 5;
void show()
{
  System.out.println(num);
}
}
刚看以前代码,一个小代码!
final修饰的年龄为最终变量,但打印出来父类根本没出现这个变量,
是父类的变量进入子类时,子类的变量将其覆盖掉!
求专业性解释。




作者: 何丛    时间: 2013-9-20 00:46
不知道你想问什么啊
作者: 张玉建    时间: 2013-9-20 00:56
何丛 发表于 2013-9-20 00:46
不知道你想问什么啊

输出的结果都是5,父类的num去那了?
final在这里起到了什么作用(final的特性没有体现),

作者: 何丛    时间: 2013-9-20 01:15
如果子类和父类声明了相同的属性,在子类中直接访问时先访问子类的属性,若想访问父类中该属性用super.属性名。这个程序中你没有访问父类中num属性,int类型num定义成final不能重新赋值
作者: 简单ai...    时间: 2013-9-21 18:12
楼上正解,(如果子类和父类声明了相同的属性,在子类中直接访问时先访问子类的属性,若想访问父类中该属性用super.属性名。这个程序中你没有访问父类中num属性,int类型num定义成final不能重新赋值)这句话写得好
作者: 简单ai...    时间: 2013-9-21 18:23
我之前是从word中复制的一串代码出现了这个情况,后来了解到word编码格式好像是unicode编码,我用的eclipse是GBK编码,所以出现了红色下划波浪线,我用eclipse中的首选项点进去改了下编码格式,然后再改回来,然后出现了很多乱码,红色下划线都变成了乱码“聽”。然后我用替换的方式全部一改就ok了




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