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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Cheers_for_CRAZ 于 2013-11-8 08:51 编辑
  1. public class Test1 {
  2.         int i=1;
  3.         public void run(){
  4.                 System.out.println("this is Test1 class run");
  5.         }
  6.         public static void main(String[] args) {
  7.                 B b=new B();
  8.                 b.run();
  9.         }
  10. }
  11. class B extends Test1{
  12.         int i=1;
  13.         public void run(){
  14.                 super.run();
  15.                 System.out.println("this is B class run"+super.i);
  16.         }
  17. }
  18. /*
  19. * 用super可以调用父类中的成员变量和成员方法
  20. *  为什么说成员变量没有覆盖一说,应该叫隐藏?
  21. *  为什么成员方法的覆盖不叫隐藏?
  22. */
复制代码

3 个回复

倒序浏览
个人认为:只是叫法问题吧。。就像为什么类就叫继承,接口就叫实现呢,本质不都是那么一回事么
回复 使用道具 举报
我也同意楼上的说法,本质上应该是一样的,但是叫法不一样而已。但是我也不能太明确就是这样,因为这涉及到Java的内存结构,java是怎样在内存中处理这些数据的细节我还不了解。但是就我学习的内容,理解来看,无论是方法,还是变量,子父类都会在内存中存在,如果有一样的成员,只不过如果不指明super,那么会默认用子类的方法和变量......不过,真心羡慕楼主的注意力,像这种小的细节,我可能都留意不到。留意不到,就会遗漏知识点,就会学的很肤浅。。。。楼主加油哈
回复 使用道具 举报
个人认为从语言的功能性来看,成员变量没有覆盖的必要,因为就算覆盖了,也得不到什么新的功能,新的好处。而方法的覆盖就可以得到一个有新功能的方法,这是有好处的。至于楼主说的隐藏,其实叫什么只是翻译的问题,覆盖的英文是override,非要翻译成隐藏也未尝不可,只不过没人这么译罢了。“成员变量没有覆盖一说,应该叫隐藏?”,既然子类定义与父类同名的的成员变量没什么明显好处,最好连个名字也别取,大家也别这么做。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马