Java程序设计 陈锐 第6章 继承和多态新.ppt

Java程序设计 陈锐 第6章 继承和多态新.ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 继承和多态 6.1 继承的含义 6.2 继承的实现 6.3 构造器的调用 6.4 类之间的关系 6.5 继承层次图 6.6 关于设计好继承的几点建议 6.7 防止类的继承 6.8 多态 6.9 超类 6.10 数组列表 6.11 对象包装器 6.1 继承的含义 对于Java编程语言,所谓的继承就是在已经存在类的基础上再扩展产生新的类。已经存在的类我们称为父类、超类或基类,新产生的类我们称为子类或派生类。既然子类继承了父类,它就拥有父类的所有特性,当然我们可以在子类中添加新的方法与字段,这些新添加的方法与字段属于也仅仅属于子类。 6.2 继承的实现 在Java中继承是通过关键字“extends”来实现的。“extends”在英语中是扩展的意思,所以在Java中继承有时也被称为扩展。关键字“extends”说明要构建一个新类而新类是从一个已经存在的类中衍生出来的。 6.2 继承的实现 在ClassManage类中新增添一个字段用以储存学生的职务,并追加可以得到一个学生的职务(strDuty)的方法,很显然这是一个新的访问器。代码如下: … … private String strDuty = ; /** * 得到学生担负的职务 */ public String getDuty() { return strDuty; } 6.2 继承的实现 这些方法与字段并没有特别的地方,像使用其他类及方法一样,假如现在有一个班干部,他的职务是班长,你完全可以像下面一样使用它: ClassManage monitor = … …; monitor.getDuty(); 当然,如果读者所拥有的只是学生类的对象,肯定不能使用这个方法,因为这个方法只是属于ClassManage类,在类Student中并没有定义。 6.2 继承的实现 这里关键字super具有不同的含义。代码: super(name, number); 的意思是“调用Student父类的构造器,同时带有name、number参数,完成相应字段的初始化”。 6.3 构造器的调用 例6-2 程序清单 ConstructorTest.java 通过这个程序运行的结果可以看出,在调用类C的构造器时,编译器会一直上溯到最初的类,也就是类A,首先完成类A构造器的实例化,再依次执行子类的构造器。现在我们再将类B的默认构造器(无参数的构造器)改成带参数的构造器,代码如下: class B extends A { public B(String str) { System.out.println(this is B); } } 6.3 构造器的调用 我们再将类C构造器中加上 super(str); 明确告诉编译器,调用的是父类中带有参数的构造器。 6.4 类之间的关系 类之间最常见的关系主要有以下3种: 依赖(或“uses-a”); 聚合(或“has-a”); 继承(或“is-a”)。 为了能更加详细地说明类之间的关系,我们现在以一个新的示例:在线书店订单系统来说明这个问题。 6.4 类之间的关系 这个系统的主要功能是注册用户可以登录到网上书店并选购图书,在线填写定单,并支付购书款,书店确认已经收到购书款时,按照用户留下的地址邮寄图书。根据面向对象中关于类的抽象,我们可以抽象出如下几个类: 图书(Book); 账户(Accout); 订单(Order); 地址(Address)。 6.4 类之间的关系 依赖关系是类中最常见也是最一般的关系。例如我们的订单类(Order)需要访问用户的账户类(Account)对象,并查看用户的信用度。所以在Order类中需要引用Account类,但图书类(Book)并不需要Account类,因为Book类并不需要去关心Accout类。像这样,我们就可以说Order类依赖Account类,如果我们修改了Accout类,则会影响到Order类。 所以依赖的实质是:一个类中的方法操作了另外一个类的实例。 6.4 类之间的关系 对于聚合关系来说,是比较明显的,也是比较容易理解的。例如在订单(Order)类中就包含了图书(Book)类,也就是“has-a”的关系。 所以说聚合的实质是:一个类的对象中包含另外一个类的对象。 6.4 类之间的关系 说到继承,那就是我们这一章讲到的主要的内容了,也就是表示一个特定的类从一个具有普遍性的类中扩展出来的。正如Student类与ClassManage类之间的关系一样。 所以说继承的实质是:一个类B是另外一个类A的具体,也就是B继承于A,那么反过来说,类A就是类B的泛化,也就是类A比类B更趋向于一般化。 6.4 类之间的关系 如果读者查阅有关UML(Unified Modeling Languag

文档评论(0)

118压缩包课件库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档