黑马程序员技术交流社区
标题:
对于覆盖override的一点理解
[打印本页]
作者:
尤洋
时间:
2012-8-7 21:17
标题:
对于覆盖override的一点理解
本帖最后由 尤洋 于 2012-8-7 22:26 编辑
最近论坛中有很多人都问到了关于override和overload的区别,于是我在网上搜索了一下关于这两者的详细资料。
发现很多人都将override理解为override 就是 子类方法 覆盖掉了 父类方法, 在比较其特点时 还专门有一点提到
被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
然后我产生了一个想法: 会不会在 override操作后 父类并没有被覆盖,仍然存在,只是在子类调用该方法时 父类的同名方法被屏蔽了,
所以看起来像被覆盖了。
而被覆盖的方法若为private的话 会有其他公共方式进行访问,打破了屏蔽,所以看起来没有覆盖成功。
我自己也做了段非常 简单的 小程序 来验证
class fu
{
public void dayin()
{
System.out.println("abc");
}
}
class zi extends fu
{
public void dayin()
{
System.out.println("ABC");
}
}
class shiyan
{
public static void main(String[] args)
{
fu f=new fu();
zi z=new zi();
z.dayin();
f.dayin();
}
}
复制代码
最后结果为
ABC
abc
也就是说父类方法的确还存在,用覆盖去理解并不完全恰当
将上面代码中dayin()方法改为静态,然后创建dayin2()公共方法调用dayin(),
再来创建对象调用方法,得到的依然是
ABC
abc
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2