深入Java核心 Java中多态的实现机制

发表于:2010-9-19 10:58

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:zl198751(JavaEye博客    来源:51Testing软件测试网采编

分享:

  以下的代码实现了每个用户 定义的数据类型,我把实现写得很简单。

  用这样的类型声明和类的定义,图2从概念的观点描述了Java指令。

  Derived2 derived2 = new Derived2();

图2 :Derived2 对象上的引用

  上文中声明了 derived2这个对象,它是Derived2类的。图2种的最顶层把Derived2引用描述成一个集合的窗口,虽然其下的Derived2对象是可 见的。这里为每个Derived2类型的操作留了一个孔。Derived2对象的每个操作都去映射适当的代码,按照上面的代码所描述的那样。例 如,Derived2对象映射了在Derived中定义的m1()方法。而且还重载了Base类的m1()方法。一个Derived2的引用变量无权访问 Base类中被重载的m1()方法。但这并不意味着不可以用super.m1()的方法调用去使用这个方法。关系到derived2这个引用的变量,这个 代码是不合适的。Derived2的其他的操作映射同样表明了每种类型操作的代码执行。

  既然你有一个Derived2对象,可以用任 何一个Derived2类型的变量去引用它。如图1所示,Derived, Base和IType都是Derived2的基类。所以,Base类的引用是很有用的。图3描述了以下语句的概念观点。

  Base base = derived2;

图3:Base类引用附于Derived2对象之上

  虽然Base类的引用不用再访问m3()和m4(),但是却不会改变它Derived2对象的任何特征及操作映射。无论是变量derived2还是 base,其调用m1()或m2(String)所执行的代码都是一样的。

53/5<12345>
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号