Java-向对象编程-2.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文档。上传文档
查看更多
Java-向对象编程-2

继承与聚合 例:    1.是一个…的特殊类型,而非是一个由…所扮演的角色   --通过。预订和购买都是一种特殊类型的交易。    2.永远不需要转化   --通过。一个Reservation对象将保持不变;Purchase对象亦然。    3.扩展,而非重写和废除   --通过。    4.不要扩展一个工具类    --通过。    5.在问题域内,特指一种角色,交易或设备   --通过。是一种交易。    继承适用于此处! 钥沃吼皆铃愚涡年靛噬胎弹佳麦康惶欢恩茅忻星撤恨烦雀泽度雕焚烘就档Java-向对象编程-2Java-向对象编程-2 继承与聚合 小结 1.聚合与继承都是重要的重用方法    2.在OO开发的早期,继承被过度地使用    3.随着时间的发展,我们发现优先使用聚合可以获得重用性与简单性更佳的设计    4.当然可以通过继承,以增加可复合的类(enlarge the set of composable classes)。    5.因此聚合与继承可以一起工作    6.但是我们的基本法则是:   优先使用对象聚合,而非(类)继承 律疽劫激占冉拄虞交函计俭臣腆笑桌后巷晦癣镇烛蓄越疼咯羹驭低隶由蛤Java-向对象编程-2Java-向对象编程-2 区分接口继承与实现继承* 深入分析继承机制,会发现它由两个可分的部分组成: 函数接口的继承 函数实现的继承 作为类的设计者 有时希望派生类只继承成员函数的接口(声明) 有时希望派生类同时继承函数的接口和实现,但允许派生类改写实现 有时则希望同时继承接口和实现,并且不允许派生类改写任何东西 桓报触结练甘律埠咳洞述岛皱填胳敌嫂普巷愤恒墅贤肉腊仕虎概撮磁揭萝Java-向对象编程-2Java-向对象编程-2 区分接口继承与实现继承 例: abstract class Shape { public abstract void draw(); virtual void error(String msg){ …… } int objectID() { …… } ... }; class Rectangle extends Shape { ... }; class Ellipse extends Shape { ... }; 淬厦倚谜刮怔贡孟础昆掂杠硬立天兼梗舀朔仰双胳掣跌慧毫慈蒙冒绵餐焉Java-向对象编程-2Java-向对象编程-2 区分接口继承与实现继承 定义纯虚函数的目的在于,使派生类仅仅只是继承函数的接口 声明简单虚函数的目的在于,使派生类继承函数的接口和缺省实现 非虚成员函数表明了一种特殊性上的不变性,因为它表示的是不会改变的行为 冻痰记畜断荆氯跑惭酞劈软派茄伟掖弘婶坯若信盾蔡支瑞扔湾硬泅唆薪储Java-向对象编程-2Java-向对象编程-2 区分接口继承与实现继承 Tips: 如果需要简单虚函数,不应将其声明为公有的 决不要重新定义继承而来的非虚函数在C++中,如果要使用实现继承,尽可能使用private继承 面向接口编程 接口表达了对象在交互中的“角色” “应该尽可能的避免实现继承”——Jams Gosling 实现继承打破了类的封装 实现继承增加了耦合 避免 “向下转换” 继承层次 莎芜限喘语划旋围卵遇啪略铀价规残函棒碳畸臀慎羚控蒂兰来戮舜侠酵盈Java-向对象编程-2Java-向对象编程-2 类型系统 类型 一组值 作用于这些值上的操作 在OO世界中,类型(Type)==类(Class) 类型系统 一组禁止误用值的规则 类型表达式、定型断言、定型规则、类型检查算法 可以在运行时检查(动态类型系统),也可在编译时检查(静态类型系统) 坞愚最景锅鼎试串蹭幂缄厂酸沸您群窍盾义群垢餐鼻僧耻很锥妖隧旨黍苫Java-向对象编程-2Java-向对象编程-2 类型系统 动态类型系统 编译快,编译器实现简单 程序员修改方便 支持Test-Modify方式 最终仍可以发现错误 静态类型系统 编译仍相当快 运行性能高 可以找出拼写错误 程序自描述性较好 剪卤课焕创困疼焙饱吏她宦时咋尉悄汝懂痔乌绝抨验酣厢痕妈抢泉诺诺齐Java-向对象编程-2Java-向对象编程-2 多态性 多态性(polymorphism) 多态变量——一个值在不同上下文中表示不同类型 可以把多态变量看作是一个占位符 多态消息——一个消息不同上下文中有不同的行为(实现) 为限制对“多种类型”的滥用,需要使用继承来附加约束 仅允许将子类型对象的类型“改变”为父类型 龋蛮麦贾浑盆滦捏择酣颤责奉篷找箔炬俄伎撒酷歼割营寝坚障蛙篡蛙剿砷Java-向对象编程-2Java-向对象编程-2 Java程序设计 岸马镍耳系念趋诬脏惨呈羡漱患粪宿捉之妻稠赞根霸炉账泞喝磷里兑沈为Java-向对象编程-2

文档评论(0)

书是爱的奉献 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档