黑马程序员技术交流社区
标题:
为什么成员变量没有覆盖一说,应该叫隐藏?
[打印本页]
作者:
Cheers_for_CRAZ
时间:
2013-11-7 20:59
标题:
为什么成员变量没有覆盖一说,应该叫隐藏?
本帖最后由 Cheers_for_CRAZ 于 2013-11-8 08:51 编辑
public class Test1 {
int i=1;
public void run(){
System.out.println("this is Test1 class run");
}
public static void main(String[] args) {
B b=new B();
b.run();
}
}
class B extends Test1{
int i=1;
public void run(){
super.run();
System.out.println("this is B class run"+super.i);
}
}
/*
* 用super可以调用父类中的成员变量和成员方法
* 为什么说成员变量没有覆盖一说,应该叫隐藏?
* 为什么成员方法的覆盖不叫隐藏?
*/
复制代码
作者:
零下五度的水
时间:
2013-11-7 21:40
个人认为:只是叫法问题吧。。就像为什么类就叫继承,接口就叫实现呢,本质不都是那么一回事么
作者:
spiderman
时间:
2013-11-7 23:00
我也同意楼上的说法,本质上应该是一样的,但是叫法不一样而已。但是我也不能太明确就是这样,因为这涉及到Java的内存结构,java是怎样在内存中处理这些数据的细节我还不了解。但是就我学习的内容,理解来看,无论是方法,还是变量,子父类都会在内存中存在,如果有一样的成员,只不过如果不指明super,那么会默认用子类的方法和变量......不过,真心羡慕楼主的注意力,像这种小的细节,我可能都留意不到。留意不到,就会遗漏知识点,就会学的很肤浅。。。。楼主加油哈
作者:
649个伤心的理由
时间:
2013-11-11 16:39
个人认为从语言的功能性来看,成员变量没有覆盖的必要,因为就算覆盖了,也得不到什么新的功能,新的好处。而方法的覆盖就可以得到一个有新功能的方法,这是有好处的。至于楼主说的隐藏,其实叫什么只是翻译的问题,覆盖的英文是override,非要翻译成隐藏也未尝不可,只不过没人这么译罢了。“成员变量没有覆盖一说,应该叫隐藏?”,既然子类定义与父类同名的的成员变量没什么明显好处,最好连个名字也别取,大家也别这么做。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2