面向对象的三大基本特性,五大基本原则

透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础。

三大基本特性:封装,继承,多态

封装,就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。

继承,指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过 “继承”(Inheritance)和“组合”(Composition)来实现。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用 基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力。

多态,是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。


五大基本原则:SPR, OCP, LSP, DIP, ISP

单一职责原则SRP(Single Responsibility Principle)

是指一个类的功能要单一,不能包罗万象。如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。

开放封闭原则OCP(Open-Close Principle)

一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。比如:一个网络模块,原来只服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来。

里式替换原则LSP(the Liskov Substitution Principle LSP)

子类应当可以替换父类并出现在父类能够出现的任何地方。比如:公司搞年度晚会,所有员工可以参加抽奖,那么不管是老员工还是新员工,也不管是总部员工还是外派员工,都应当可以参加抽奖,否则这公司就不和谐了。

依赖原则DIP(the Dependency Inversion Principle DIP)

具体依赖抽象,上层依赖下层。假设B是较A低的模块,但B需要使用到A的功能,这个时候,B不应当直接使用A中的具体类: 而应当由B定义一抽象接口,并由A来实现这个抽象接口,B只使用这个抽象接口:这样就达到了依赖倒置的目的,B也解除了对A的依赖,反过来是A依赖于B定义的抽象接口。通过上层模块难以避免依赖下层模块,假如B也直接依赖A的实现,那么就可能 造成循环依赖。一个常见的问题就是编译A模块时需要直接包含到B模块的cpp文件,而编译B时同样要直接包含到A的cpp文件。

接口分离原则ISP(the Interface Segregation Principle ISP)

模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来。

时间: 2024-09-30 12:41:05

面向对象的三大基本特性,五大基本原则的相关文章

面向对象的三大特征

说明: 文章根据个人学习<疯狂java讲义>及<疯狂Java:突破程序员基本功的16课>后,学习整理而来,其中部分代码直接使用原文示例: 说起面向对象的三大特性:封装.继承和多态,知道点面向对象的人可谓是耳熟能详,但其中还是有很多知识点.细节需要仔细的品味一番,才能实的掌握这三大特性,为以后理解程序,编写精致的代码提供基本的保证.  一.封装 封装性就是把类(对象)的属性和行为结合成一个独立的相同单位,并尽可能隐蔽类(对象)的内部细节. 封装的特性使得类(对象)以外的部分不能随意存

《Java 7程序设计入门经典》一1.5 面向对象编程的关键特性

1.5 面向对象编程的关键特性 Java的核心在于面向对象编程(Object-Oriented Programming,OOP).面向对象的方法学是Java不可或缺的一部分.所有的Java程序或多或少都是面向对象的.因为面向对象对Java如此重要,甚至在写一个简单的Java程序前了解面向对象的基本原则都是有用的. 面向对象是解决编程工作的一个强有力的方法.自从计算机发明以来,编程方法学有着很大的变化,这些变化主要是为了适应不断增长的编程复杂度.例如,在计算机刚发明时,编程是通过计算机的前面板(f

Java面向对象的三大特征_java

java面向对象的三大特征:"封装.继承.多态".更多Java技术知识,请登陆疯狂软件教育官网.微信搜索微信号:疯狂软件,参加2015年优惠活动,有机会获得优惠劵和代金劵. 以本文为例,User类中的变量为私有变量,只能通过创建对象(此时构造方法自动调用)来赋值. 外界只能通过公有方法api()来访问User类. Admin类继承了User类,调用了其构造方法,还重写了method_1方法,增加了一个特有方法power(). User文件 public class User { /**

全面解析PHP面向对象的三大特征

PHP面向对象的三大特征: 继承,封装,多态 一.继承 1.如何实现继承? 给子类使用extends关键字,让子类继承父类: class Student extends Person{} 2.实现继承的注意事项? ① 子类只能继承父类的非私有属性. ②子类继承父类后,相当于将父类的属性和方法copy到子类,可以直接使用$this调用. ③ PHP只能单继承,不支持一个类继承多个类.但是一个类进行多层继承: class Person{} class Chengnian extends Person

应用宝日分发量破1亿腾讯应用宝5.0三大新特性曝光

2014年10月30日,在2014腾讯全球合作伙伴大会上,腾讯社交网络事业群副总裁林松涛宣布应用宝日分发量突破1亿,腾讯开放平台将进一步探索互联网移动化创新,打造移动互联网新生态.在大会上,备受关注的应用宝5.0版本也首次 曝光,林松涛介绍,应用宝5.0具有社交发现.内容直达和应用部落这三大亮点特性,同时,腾讯开放平台及应用宝将再推"灵聚平台"和"双百计划"两大扶持计划,助力移动开发者在移动互联网蓝海中向成功启航.腾讯社交网络事业群副总裁林松涛发表演讲应用宝日分发量

工业大数据应用的三大挑战和五大商业趋势

在设备运行的过程中,自然磨损本身会使产品的品质发生一定的变化.通过信息技术.物联网技术的发展,通过传感器技术,实时感知数据,知道产品出了什么故障,哪里需要配件,使得生产过程中的这些因素能够被精确控制,从而真正实现生产的智能化.一定程度上,工厂/车间的传感器所产生的大数据直接决定了"工业4.0"所要求的智能化设备的智能水平. 从生产能耗角度来看,设备生产过程中利用传感器集中监控所有的生产流程,能够发现能耗的异常或峰值情况,由此能够在生产过程中不断实时优化能源的消耗.同时,对所有流程的大数

2015&amp;amp;nbsp;Objective-C&amp;amp;nbsp;三大新特性

Overview 自 WWDC 2015 推出和开源 Swift 2.0 后,大家对 Swift 的热情又一次高涨起来,在羡慕创业公司的朋友们大谈 Swift 新特性的同时,也有很多像我一样工作上依然需要坚守着 Objective-C 语言的开发者们.今年的 WWDC 中介绍了几个 Objective-C 语言的新特性,还是在"与 Swift 协同工作"这种 Topic 里讲的,越发凸显这门语言的边缘化了,不过有新特性还是极好的,接下来,本文将介绍下面三个主要的新特性: Nullabi

Google披露Android 5.0的三大安全特性

摘要: 一根甜甜的棒棒糖,外加上坚韧的凯夫拉包装.这是Google介绍新版Android 5.0(代号棒棒糖)的新安全功能时用的说辞. 本月中旬发布的Android 5.0是Android史上最大的一次更新.新版的And 一根甜甜的棒棒糖,外加上坚韧的凯夫拉包装.这是Google介绍新版Android 5.0(代号棒棒糖)的新安全功能时用的说辞. 本月中旬发布的Android 5.0是Android史上最大的一次更新.新版的Android有很多引人注目的特性,如Material Design设计

NFV时代的新一代OSS系统:三大价值与五大功能要素

日前,中国电信在京召开"十年重构 翼启转型----<中国电信CTNet2025网络架构白皮书>发布会",全面启动网络智能化重构. 作为中国电信的根本性和战略性创新,CTNet2025是中国电信未来网络架构重构的愿景,是推动企业深化转型的重要抓手:白皮书的发布,也标志着中国电信正式进入转型新战略的实施阶段. 在众多的网元中,OSS(运营支撑系统)的地位非常重要,因为它一边连接着网络,一边连接着业务和用户:而且OSS系统的封闭性与烟囱式都非常明显,是块难啃却必须要啃的骨头. 中