A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张玉建 中级黑马   /  2013-9-20 00:35  /  1329 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨增坤 于 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修饰的年龄为最终变量,但打印出来父类根本没出现这个变量,
是父类的变量进入子类时,子类的变量将其覆盖掉!
求专业性解释。



评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

5 个回复

倒序浏览
不知道你想问什么啊
回复 使用道具 举报
何丛 发表于 2013-9-20 00:46
不知道你想问什么啊

输出的结果都是5,父类的num去那了?
final在这里起到了什么作用(final的特性没有体现),
回复 使用道具 举报
如果子类和父类声明了相同的属性,在子类中直接访问时先访问子类的属性,若想访问父类中该属性用super.属性名。这个程序中你没有访问父类中num属性,int类型num定义成final不能重新赋值

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
楼上正解,(如果子类和父类声明了相同的属性,在子类中直接访问时先访问子类的属性,若想访问父类中该属性用super.属性名。这个程序中你没有访问父类中num属性,int类型num定义成final不能重新赋值)这句话写得好
回复 使用道具 举报
我之前是从word中复制的一串代码出现了这个情况,后来了解到word编码格式好像是unicode编码,我用的eclipse是GBK编码,所以出现了红色下划波浪线,我用eclipse中的首选项点进去改了下编码格式,然后再改回来,然后出现了很多乱码,红色下划线都变成了乱码“聽”。然后我用替换的方式全部一改就ok了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马