- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 继承 学习目标: 理解继承的含义 理解抽象类和具体类的区别 了解使用继承的场合 3.1 引言 继承可以指定类(子类)从父类中获取一些特性,再添加它自己的独特特性 子类继承父类(超类)的所有字段(私有字段除外)、消息和方法 为什么需要继承? 支持更丰富、更强大的建模,有利于代码复用 在一个类中定义信息和行为,在相关的子类中共享这些定义,有利于减少编码 来自客观世界的推动力,也是面向对象的主要动机之一 继承的UML类图 3.2 设计类层次结构 集合(Collection)建模 集合是可以包含其他对象的对象,供以后使用 四类集合 List:该集合可以把所有的对象按照插入的顺序放置 Bag:该集合中的对象没有排序 LinkedList:该集合中的对象使用序列对象进行排序,采用链表方式,更新速度快,但有哪些信誉好的足球投注网站速度较慢 ArrayList:该集合中的对象使用数组进行排序,有哪些信誉好的足球投注网站速度快,但更新速度慢 集合的层次关系 关于共享消息... 在开发层次结构时,可能涉及共享消息--将共享消息的层次放置越高越好 Collection的层次结构 contains(Object):boolean在集合中有哪些信誉好的足球投注网站对象 (位于Collection中) elementAt(int):Object在参数指定的位置检索对象 (位于List中) numberOfElements():int返回集合中的对象数 (位于Collection中) 3.3 给类层次结构添加实现代码 确定类层次结构、消息位置后,添加实现元素(字段、构造函数和方法) 注意:不必考虑层次结构所需的字段(详细设计时考虑) Collection的层次结构 3.4 抽象类 抽象类:至少有一个抽象方法的类-抽象方法可以是该类本身的方法,也可以是从超类继承来的 抽象类的优点 支持更丰富、更灵活地建模 共享更多的代码,因为可以编写具体的方法来实现抽象的方法 注意:不能创建抽象类的实例 如何构建继承层次? 在问题域中查找具体的概念,推导出它们的知识和行为 在具体的类中找出共同点,以便引入更一般的超类 把超类组合到更一般的超类中,直到找出最一般的根类为止(如Collection) 当一个具体类继承另一个具体类时... 3.5 重定义方法 面向对象允许重新定义继承来的方法 为什么重定义方法? 如果继承的方法是抽象的,通过重定义将其具体化 子类中的方法需要完成一些额外的工作 为子类提供更好的实现代码(更高效或更准确) 实践4 子类如何调用超类中的方法? 3.6 实现栈类 栈(Stack):后进先出 相关的消息: push(Object):把对象添加到栈的顶部 peek():Object:返回栈顶的对象 isEmpty():boolean:如果栈中没有对象,就返回true pop():Object:从栈顶删除一个对象,并返回该对象 关于LinkedList类... LinkedList类中方法: addElement( ):在列表的尾部添加一个对象 lastElement():返回列表尾部的对象 numberOfElement():int:返回列表中的对象数 removeLastElement():删除列表尾部的对象 3.6.1 使用继承实现栈 使用继承实现栈 public class Stack extends LinedList { public void push(Object o) { addElement(o); } public Object peek( ){ return lastElement( ); } public boolean isEmpty( ) { return numberOfElement( )==0; } public Object pop( ) { Object o = lastElement( ); removeLastElement( ); return o; } } 3.6.2 使用复合实现栈 public class Stack { private LinkedList list; public Stack( ) { list = new LinkedList( ); } public void push(Object o) { list.addElement(o); } public Object peek( ) { return list.lastElement( ); } public boolean isEmpty( ) { return list.numberOfElement( ) == 0; } public Object pop( ) { Object o = l
文档评论(0)