一、三大基本特征

1、封装

封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成"类",其中数据和函数都是类的成员。

封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。

面相对象的不就是使用程序处理时间时以对象为中心去分析吗,在面向过程不同,面向过程关心处理的逻辑、流程等问题,而不关心事件主体。而面向对象即面向主体,所以我们在解决问题时应该先进行对象的封装(对象是封装类的实例,比如张三是人,人是一个封装类,张三只是对象中的一个实例、一个对象)。

比如我们日常生活中的小兔子、小绵羊都可以封装为一个类

比如兔子的属性有两只耳朵、四条腿、一双眼睛、三瓣嘴;行为(功能)有跑、跳、吃素等。

2、继承

继承是面向对象的基本特征之一,继承机制允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。类似下面这个图:

我们在上面已经封装了兔子这个类,其他动物也一样可以进行封装。在封装过程中我们发现兔子、绵羊这两个类具有相似的功能或特性如吃草,所以我们可以抽取共有特征和方法形成高一层的类,如这里的食草动物、食肉动物。继承之间是子父类的关系。继承机制可以很好的描述一个类的生态,也提高了代码复用率,在Java中的Object类是所有类的超类,常称作上帝类。

3、多态

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

多态的优点:

1.消除类型之间的耦合关系

2.可替换性

3.可扩充性

4.接口性

5.灵活性

6.简化性

多态存在的三个必要条件:

继承

重写(子类继承父类后对父类进行重新定义)

父类引用指向子类对象

简言之,多态其实是在继承的基础上的。比如说今天我们要去动物园参观动物,那么你说我们去参观兔子、参观绵羊、参观狮子、参观豹子都是对的,但你不能说我们去参观汽车。在这个例子中,子类具有多态性:除了使用自己的身份,还能充当父类。

二、五大基本原则

1、单一职责原则(SRP)

一个类应该有且只有一个改变它的理由,这意味着一个类应该只有一项工作。

比如在职员类里,将工程师、销售人员、销售经理这些情况都放在职员类里考虑,其结果将会非常混乱,在这个假设下,职员类里的每个方法都要if else判断是那种情况,从类结构上来说将会十分臃肿。

2、开放封闭原则(OCP)

对象或实体应该对扩展开放,对修改封闭。

更改封闭即是在我们对模块进行扩展时,勿需对源有程序代码和DLL进行修改或重新编译文件!这个原则对我们在设计类的时候很有帮助,坚持这个原则就必须尽量考虑接口封装,抽象机制和多态技术!

3、里氏替换原则(LSP)

在对象x为类型T时q(x)成立,那么当S是T的子类时,对象y为类型S时q(y)也应成立。(即对父类的调用同样适用于子类)

4、依赖倒置原则(DIP)

高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。具体实现应该依赖于抽象,而不是抽象依赖于实现。

可以这样理解,上面我举例子的时候先说了兔子和绵羊,然后才推出食草动物。但如果我们继续认识了牛、马等食草动物,我们会发现我们需要不断调整食草动物额描述,这样程序会变得僵化,所以我们不应该让子类依赖于实体,不应该让父类模块依赖于子类模块。所以我们需要将食草动物设计为抽象类,即抽象类或接口。这样下层只需要实现相应的细节而不会影响父类。

5、接口隔离原则(ISP)

不应该强迫客户端实现一个它用不上的接口,或者说客户端不应该被迫依赖它们不使用的方法,使用多个专门的接口比使用单个接口要好的多!

比如,为了减少接口的定义,将许多类似的方法都放在一个接口中,最后会发现,维护和实现接口的时候花了太多精力,而接口所定义的操作相当于对客户端的一种承诺,这种承诺当然是越少越好,越精炼越好,过多的承诺带来的就是你的大量精力和时间去维护!

面向对象的三大基本特征、五大基本原则相关推荐

  1. 面向对象:三大特性与五大原则

    面向对象:三大特性与五大原则 面向对象(Object Oriented, OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布 ...

  2. 什么是面向过程?什么是面向对象?面向对象的三大基本特征是什么?

    一.什么是面向过程? 面向过程是一种以过程为中心的编程思想,其原理就是将问题分解成一个一个详细的步骤,然后通过函数实现每一个步骤,并依次调用. 面向过程我们所关心的是解决一个问题的步骤,举个例子,汽车 ...

  3. 浅谈面向对象的三大基本特征

    **类和对象 由类来创建对象,对象调用方法来解决问题 面向对象的三大基本特征: 1,封装:就是一个类里的方法的职能尽量单一,高内聚低耦合 2继承:是由已知类来创建新类的机制.子类继承父类的成员方法但不 ...

  4. 【Java修行之路】--面向对象的三大基本特征:封装、继承、多态

    文章目录 Java面向对象的三大基本特征(封装.继承.多态) 1.Java访问权限修饰符 2.封装 2.1封装问题引例 2.2封装问题实例 2.3私有属性的Setter和Getter方法 2.4方法的 ...

  5. 面向对象的三大基本特征和六大基本原则

    面向对象三大特征: (1)封装(Encapsulation) 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏.封装是面向对象的特 ...

  6. 面向对象的三大要素和五大原则

    1.三大要素 封装,继承,多态 2.五大原则: (1)单一职责原则(SRP:Single Responsibility Principle)一个类,最好只做一件事,只有一个引起它变化的原因 举例:图书 ...

  7. 面向对象的三大基本特征

    先说说什么是面向对象? 谈谈你对面向对象的理解 面向对象是一种编程思想.聊到面向对象,我们需要聊一下面向过程的编程方式,因为面向对象是从面向过程过渡而来的. 举个例子: 如果是面向过程的话,我们会将这 ...

  8. 6.面向对象的三大基本特征

    封装 有些人可能学Java有半年了,还是搞不懂封装是什么东西.其实我们每天都在用封装.那么封装是什么呢?封装简单来说就是包装.比如说:我们把一堆数据放在一个类里面,并且加上get和set方法,这个就是 ...

  9. 面向对象封装继承多态五大基本原则魔法方法反射

    目录 面向对象 三大基本特征 五大基本原则 魔法方法 反射 面向对象 什么是面向对象 使用模板的思想,将世界万事万物使用对象来表示一个类型 面向对象和面向过程的区别: 面向对象的不就是使用程序处理事情 ...

最新文章

  1. Jvm常见面试题及答案汇总1000道(春招+秋招+社招)
  2. 使用三层架构实现简单的MVC登陆操作!并实现基本的增删改查功能!!
  3. MyBatis 多参数传递
  4. C++中 static 关键字的作用
  5. SAP云平台 CloudFoundry环境下的space guid
  6. c++返回指针时候注意提防_编写干净的测试–提防魔术
  7. C++ delete只能用来释放new分配的内存
  8. Java讲课笔记02:Java集成开发环境
  9. 计算机科学 —— 时间戳(timestamp)
  10. 多边多面形成体_Nature Comm | 中科院分子植物卓越中心巫永睿团队揭示类胡萝卜素影响玉米硬质胚乳形成的新机制...
  11. mysql tiqu mssql_mysql数据表如何导入MSSQL中
  12. 北航计算机考研计算机组成原理,北航计算机组成原理讲义.pdf
  13. Android随笔-include、merge、ViewStub
  14. aw36515闪光灯驱动ic调试
  15. 台式计算机如何连接手机热点上网,台式电脑怎么连接手机热点 教你使用USB共享网络...
  16. ADC采样使用钳位电路分压来采比电压高的电路
  17. 洛谷 P2916题解 【[USACO08NOV]Cheering up the Cow G】
  18. 如何使用HTML制作tab选项卡
  19. Android问题解决-部分机型上传图片失败
  20. 空间射线与三角形相交算法的两种实现

热门文章

  1. java判断图片是否被修改过_4种方法判断图片是否被PS处理过,你都会吗? | X的博客...
  2. 编写代码的「八荣八耻」
  3. go语言 第三方包安装方法_Adobe AE 2019 软件下载安装包教程(附下载方法)
  4. 通告 | Eth2 验证者快速启动器发布
  5. Unity实战(3):pureMVC框架应用
  6. Invalidate()、InvalidateRect()、InvalidateRgn、UpdateWindow()
  7. 每次USB共享网络后,网络编号自动+1后清零方法
  8. 华为鸿蒙OS摄像头,华为海雀智能摄像头pro的上市 鸿蒙os生态不断在壮大
  9. ad15原理图中变压器种类_最简单的变压电路图大全(十一款最简单的变压电路设计原理图详解) - 全文...
  10. 工具小软件——change case