- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
面向对象程序设计思想的特点
一、封装性:数据与操作的集中管理
封装是面向对象程序设计最基础的特征之一,其核心是将数据(属性)与操作数据的方法(行为)绑定为一个整体(类),并通过访问控制限制外部对内部细节的直接访问。这一机制如同将物品放入带锁的盒子,仅允许通过指定方式(如钥匙)操作物品,从而提高代码的安全性和可维护性。
1.1访问控制的具体实现
实际开发中,封装主要通过访问控制符(如public、private、protected)实现。通常建议将成员变量(属性)的访问权限设置为private(私有),仅允许类内部直接访问;而操作这些变量的方法(如获取值的getter、修改值的setter)则设置为public(公有),供外部调用。例如,设计一个“用户信息”类时,用户密码应声明为private,避免外部直接修改,同时提供public的setPassword方法,在方法内部添加密码复杂度校验逻辑(如长度≥8位、包含字母和数字),确保数据修改的规范性。
1.2封装的应用价值
封装的直接价值体现在两方面:一是数据保护,防止外部错误操作导致数据异常。例如,若直接暴露年龄属性为public,可能出现外部代码将年龄设置为-5的无效值;通过private属性+带校验的setAge方法,可在赋值前检查年龄是否在合理范围(如0-150),从源头避免无效数据。二是降低模块间耦合,外部只需关注类提供的接口(公有方法),无需了解内部实现细节,后续修改类的内部逻辑(如将密码存储方式从明文改为哈希值)时,只要接口保持不变,外部调用代码无需调整。
二、继承性:代码复用与层次化设计
继承允许一个类(子类/派生类)继承另一个类(父类/基类)的属性和方法,在此基础上扩展新功能。这一机制如同建筑中的“模块化装修”,先搭建基础框架(父类),再根据需求添加特色装饰(子类扩展),显著提升代码复用率,同时构建清晰的类层次结构。
2.1单继承与多继承的选择
多数编程语言(如Java、C)仅支持单继承(一个子类只能有一个父类),目的是避免多继承可能引发的“菱形继承问题”(多个父类存在同名方法时,子类无法明确调用哪一个)。例如,设计“动物”类作为父类,子类“猫”和“狗”分别继承其“进食”“移动”方法;若需实现“会飞的狗”,可通过接口(如Flyable接口)补充飞行功能,而非让“狗”同时继承“动物”和“鸟类”。部分语言(如C++)支持多继承,但需开发者手动处理冲突(如使用作用域限定符指定调用父类方法)。
2.2继承的使用规范
为确保继承的有效性,需遵循“里氏替换原则”(LiskovSubstitutionPrinciple):子类应能完全替代父类,且不影响程序的正确性。例如,父类“矩形”有“设置宽度”和“设置高度”的方法,子类“正方形”若重写这两个方法(如设置宽度时同步修改高度),则可能违反该原则——当程序期望通过“设置宽度”单独调整矩形宽度时,正方形的实现会导致逻辑错误。此时更合理的设计是让正方形与矩形共享抽象父类(如“四边形”),而非直接继承。
三、多态性:同一接口的多样实现
多态指不同对象在接收相同消息(调用同一方法)时,表现出不同行为的特性。这一机制如同“通用遥控器”,按下“开关”键时,电视、空调、音响会执行各自的开关操作,核心是“统一接口,差异实现”,极大提升代码的灵活性和扩展性。
3.1编译时多态与运行时多态
多态可分为两种类型:编译时多态(静态多态)通过方法重载(Overloading)实现,即同一类中定义多个同名方法,但参数类型或数量不同。例如,“计算器”类中定义add(inta,intb)和add(doublea,doubleb),编译器根据调用时的参数类型选择具体方法。运行时多态(动态多态)通过方法重写(Overriding)和虚函数(或抽象方法)实现:父类声明虚方法(如Animal类的speak()),子类重写该方法(如Dog类重写为“汪汪”,Cat类重写为“喵喵”),运行时根据实际对象类型调用对应的方法。
3.2多态的应用场景
多态在需要统一处理多种类型对象的场景中尤为重要。例如,开发图形绘制程序时,定义抽象类Shape(包含draw()方法),子类Circle、Rectangle、Triangle分别重写draw()方法实现各自的绘制逻辑。主程序只需维护一个Shape类型的列表,遍历列表调用draw()方法时,实际执行的是各子类的具体实现,无需为每种图形编写独立的绘制代码。后续新增图形类型(如Ellipse)时,只需继承Shape并重写draw()方法,主程序逻辑无需修改,符合“开闭原则”(对扩展开放,对修改关闭)。
四、抽象性:从具体到一般的模型提炼
您可能关注的文档
最近下载
- 2025年甘肃省武威市凉州区发放镇招聘专业化管理大学生村文书笔试备考试题及答案解析.docx VIP
- 松下zs10操作说明书.pdf
- 最新人教版六年级上册道德与法治课程纲要 .pdf VIP
- 2025年全国司法考试客观题试卷及答案.docx VIP
- 5-6岁第二阶段第20课时《美丽的唐三彩》-美术课件.ppt VIP
- (完整版)PPT海报展板版式设计.ppt VIP
- 中国宫腔镜诊断与手术临床实践指南(2023年).pptx VIP
- 2025年法律职业资格(客观题)真题含答案.docx VIP
- 展板版式设计.ppt VIP
- 职能科室对医技科室医疗质量督查记录表(检验科、放射科、超声科、功能科、内镜室).pdf VIP
文档评论(0)