全文预览

Java的面向对象编程外文资料翻译

上传者:幸福人生 |  格式:doc  |  页数:15 |  大小:116KB

文档介绍
通常情况下,一个类既是父类也是子类。一个子类的对象可以被当作其父类的对象来处理。这使得可能会有一些有趣的操作。例如,尽管有从一个特定的父类派生出的众多子类的对象彼此之间可能会有很大的不同的事实,但只要我们将他们当作父类的对象来看,我们仍可以创建一个引用的数组给他们。但反之则不然:一个父类对象不能被当成一个子类对象。例如,图形(Shape)不一定是圆Circle。尽管子类的对象也“是”父类的对象,子类类型和父类类型却是不相同的。子类对象可以被视为父类的对象。这是合理的,因为子类含有和每个超类成员相对应的成员。但也应认识到,子类通常拥有比父类更多的成员。但Java不允许逆向赋值,因为如果把超类对象赋给子类的引用,就会使子类中额外的子类成员没有定义。子类对象的引用可以被隐式地转换为超类对象的引用,因为根据继承性,子类对象“是”超类对象。有四种可能的方法来使父类的对象和子类的对象与父类的引用和子类的引用相匹配:1、父类对象与可以直接用父类的引用。2、子类对象与可以直接用子类的引用。3、子类的对象用父类的引用是安全的,因为子类对象同样也是其父类的对象。但这样的代码只能引用父类的成员。如果该代码通过父类的引用来访问子类所特有的成员,编译器就会报告一个语法错误。4、如果用子类来引用父类的对象,将报告一个语法错误。尽管将子类的对象看成是父类的对象会带来很大的便利,而且可以通过这些父类的引用操纵这些对象来实现,但这会引发一个问题。在一个工资管理系统,例如,我们希望能够通过一组员工数组来计算每个人的周薪。但是直觉告诉人们,使用父类的引用将使程序只调用父类的工资计算程序(如果父类中确实有这样一个程序的话)。我们需要一种方式仅通过使用父类的引用来正确的调用对每个对象(无论是父类对象或子类对象)相对应的工资计算程序。其实,这正是当我们考虑了多态性和动态链接后Java所呈现的并将在此章节中讨论的内容。

收藏

分享

举报
下载此文档