面向对象程序设计-类的继承1.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象程序设计 类的继承 教师:张立涓 本单元教学内容 理解继承的基本概念 使用extends实现继承 类成员的继承规则 子类对父类的扩展 考察以下例子 飞机票: 属性:单价、始发站、终点站、航班号、座位号、仓位等级、航空公司。 方法:价格查询等。 火车票: 属性:单价、始发站、终点站、 车次、座位号、座位类型。 方法:价格查询等。 船票: 属性:单价、始发站、终点站、 轮船号、座位号、座位类型。 方法:价格查询等。 思考 观察P89-91 关于飞机票、火车票、客车票、船票 类的声明代码冗余度如何? 各个类之间有多少重复的代码? 类之间的继承关系图示 程序演示—父类的声明 //父类Ticket class Ticket{ protected double price;//票单价 protected String startStation;//始发站 protected String endStation;//终点站 protected String seatNum;//座位号 public double getPrice(){ return price; } public String getInfo(){ return 票价+price+始发站+startStation+终点站+endStation; } } 程序演示—类的继承 //Ticket类的子类 描述飞机票 class PlaneTicket extends Ticket{ protected String flightNum;//航班号 protected String seatType;//舱位等级 protected boolean roundTrip;//是否为往返机票 protected String airlineCompany;//航空公司 } 继承的语法 继承的语法 使用关键字extends 格式:class 子类名 extends 父类名{} 如:class Manager extends Empoyee{……} 练习 继承父类Ticket,完成其他子类(火车票、客车票、船票)的声明 成员属性与成员方法的继承规则 子类对父类的扩展 子类除了继承父类的成员变量和成员方法外,还可以添加新的成员变量和成员方法,用于描述自己的特征和行为。 例如,类PlaneTicket除了继承父类Ticket的成员变量和成员方法外,还添加了自己的成员变量flightNum(航班号)、seatType(舱位等级)、airlineCompany(航空公司)等 单继承 Java只支持单继承,也即一个类只能有一个父类。 分析与讨论 深入理解继承概念 面向对象中的继承是一个基于分类学的概念,继承描述的是一种“is a”的关系。子类是父类在同一个分类分支上的一个更为特殊的类,只有当类之间存在的是一种能够被描述为:“子类 is a 父类”的时候,我们才使用继承。 因此,在面向对象程序设计中,Skirt与Shirt类不能表示为一种继承关系。 添加抽象 练习 1.创建一个具有确定位置矩形类PlainRect,该类继承于类Rect,其确定位置用矩形的左上角坐标来标识,为该类添加: 子类扩展两个属性: 矩形左上角坐标startX和startY。 练习 2.编写上题PlainRect类的测试程序 (1)创建一个左上角坐标为(10,10),长为20,宽为10的矩形对象; (2)计算并打印输出矩形的面积; 思考 子类可以继承父类的所有非私有成员,那么构造器方法是否可以继承? 子类扩展的成员属性又该如何初始化呢? 子类的构造器方法 //父类构造器方法 public Ticket(double price,String startStation,String endStation,String seatNum){ this.price = price; this.startStation = startStation; this.endStation = endStation; this.seatNum = seatNum; } 练习 添加其他子类的构造器方法 思考:若父类重新声明了构造器方法,子类是否还可以使用默认的构造器方法? 练习 为父类Rect类声明构造器方法,初始化矩形的长和宽 为子类PlainRect声明构造器方法,初始化长、宽和左上角坐标 创建一个矩形对象,长为20,宽为10,左上角坐标(1,2); 思考 子类是否可以重新声明从父类继承过来的方法? 方法的覆盖 //父类Ticket的getInfo()方法 public String getInfo(){ return \n票

文档评论(0)

ea238982 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档