面向对象编程思想的介绍

1、面向对象的理解

  面向对象(Object Oriented)是一种程序设计的思想。

  说面向对象之前,我们先来说说面向过程。来最经典的例子,把大象放进冰箱,1、打开冰箱。2、把大象放进去。3、关上冰箱。嗯,看着很合理,但是需要增加一些新的需求,比如大象放进冰箱以前先转个圈、放进去以后只关一半冰箱门、不放大象了放狮子等等一系列需求时,就需要把代码都捋一遍,再去改逻辑,这样的需求越来越多,那么代码就会越来越乱,难以维护。

  于是就诞生了面向对象思想,一切皆对象。我们再用面向对象的思想去看上面的问题,可以拆成两个对象,大象和冰箱,冰箱负责开门关门,大象负责进冰箱,这样以后有新需求或者需求变更,我们只用关心具体的对象。

  下面说一下面向对象的三个基本特征是:封装、继承、多态。

2、封装

  通过上面的例子我们已经简单的用过封装了,将原本复杂混乱的逻辑,封装成一个个对象。每个对象只做自己的事情。再结合上面的例子,冰箱负责开门,你正常开也行,转个圈开也行,你最后只要把门打开就行;大象负责进冰箱,你跳着进走着进,最后你只要在冰箱里面就行。还有我们经常用的U盘,我们不用管它内部是怎么实现的,只需要用它提供的USB接口就行。

  2.1 封装的理解

  封装(Encapsulation)指一种实现细节部份包装、隐藏起来的方法。封装是为了防止对实现细节的访问。用户无需知道对象内部的细节,但可以通过对象对外提供的接口来访问该对象。

  2.2 封装的优点

    2.2.1 封装的特点:

    1. 减少耦合;
    2. 数据隐藏,数据安全;
    3. 内部修改保持稳定;
    4. 提供重用性;
    5. 分工合作,职责分明;
    6. 方便构建大型复杂的系统;

3、继承

  现实中也会有一些继承,比如继承财产,是儿子从父亲那获得财产。面向对象中的继承,也是子类从父类中获得属性、方法。跟现实中继承不同的是,面向对象中的父类是抽象出来的,不会是一个精确到个体。比如所有的动物都有名字,那我们可以抽象出一个父类Animal,有一个Name属性;猫是动物,所以猫就可以继承Animal来获得Name属性,同时猫还有一个Miao()的方法;这里的猫,其实还是一层抽象,所以还可以继续继承;田园猫是猫,所以它可以继承猫,这时候它就同时获得了Name属性和Miao()方法。

  3.1 继承的理解

  继承是可以让某个类型的对象获得另一个类型的对象的属性的方法。面向对象的一个重要特性是复用性,继承是实现复用性的一个重要手段。继承允许我们根据一个类来定义另一个类。当创建一个类时,不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可。这个已有的类被称为的基类,这个新的类被称为派生类。

  3.2 继承的实现

  继承概念的实现方式有二类:实现继承与接口继承。

    1. 实现继承:指直接使用基类的属性和方法,无需额外编码。
    2. 接口继承:指仅使用属性和方法的名称,但是子类必须提供实现。

  二者的区别是:使用实现继承,实现了父子类的属于(IS-A)关系,比如上面说的猫是动物,田园猫是猫。使用接口继承,则标识的是子类能做什么。

  3.3 继承的优缺点

    1. 去掉重复代码。 
    2. 可以实现多态。
    3. 侵入性强。   

4、多态

  接着上面动物的例子来说。动物都会叫,但每种动物的叫法不同,猫是喵喵喵~,狗是汪汪汪~,猪是哼哼哼~,都是叫,但他们最后表现出来的声音不同。

  4.1 多态的理解

  多态(Polymorphism),可以理解为同一个行为展现出不同的形态。多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是每个类以不同方式实现相同属性或方法。

  4.2 多态的实现

  多态分为静态多态和动态多态。

    4.2.1 静态多态

    在静态多态中,函数的响应是在编译时发生的,也叫编译时多态。在编译时,函数和对象的连接机制被称为早期绑定,也被称为静态绑定。

    静态多态主要指方法的重载。

    4.2.2 动态多态

    动态多态指程序中定义的对象引用所指向的具体类型在运行期间才确定,也叫运行时多态。

    动态多态有三个必要条件:

    1. 继承
    2. 重写
    3. 父类引用指向子类对象

    动态多态的实现方法:

    1. 接口+实现,即一个接口多个实现。
    2. 抽象类+实现,即子类重写父类中的方法。   

  4.3 多态的优缺点

    4.3.1 优点:

    1. 提高了代码的维护性
    2. 提高了代码的扩展性
    3. 可替换性
    4. 灵活性

    4.3.2 缺点

    1. 不能使用子类的特有属性和行为

原文地址:https://www.cnblogs.com/chenshc/p/12407579.html

时间: 2024-08-30 13:56:36

面向对象编程思想的介绍的相关文章

面向对象编程思想(OOP)

本文我将从面向对象编程思想是如何解决软件开发中各种疑难问题的角度,来讲述我们面向对象编程思想的理解,梳理面向对象四大基本特性.七大设计原则和23种设计模式之间的关系. 软件开发中疑难问题: 软件复杂庞大 很多软件进入维护阶段 需求的不断变更 软件开发中存在很多其他的问题,上面只是从程序开发和设计的角度看到的部分问题.需求解决上面软件开发中的问题,就要求我们编写(设计)的软件具有很好的可读性.可维护性和可扩展性.我们需要保证代码具有高内聚低耦合. 下面将简单介绍面向对象的一些基本特性.设计原则,以

面向对象编程思想(OOP)

本文我将从面向对象编程思想是如何解决软件开发中各种疑难问题的角度,来讲述我们面向对象编程思想的理解,梳理面向对象四大基本特性.七大设计原则和23种设计模式之间的关系. 软件开发中疑难问题: 软件复杂庞大 很多软件进入维护阶段 需求的不断变更 软件开发中存在很多其他的问题,上面只是从程序开发和设计的角度看到的部分问题.需求解决上面软件开发中的问题,就要求我们编写(设计)的软件具有很好的可读性.可维护性和可扩展性.我们需要保证代码具有高内聚低耦合. 下面将简单介绍面向对象的一些基本特性.设计原则,以

面向对象编程思想 - 月亮晶石的日志 - 网易博客

面向对象是一种新兴的程序设计方法,或者说它是一种新的程序设计范型,其基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计. 它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的其它概念来构造系统).这可以使系统直接地映射问题域,保

面向对象编程思想(OOP)(转发)

本文我将从面向对象编程思想是如何解决软件开发中各种疑难问题的角度,来讲述我们面向对象编程思想的理解,梳理面向对象四大基本特性.七大设计原则和23种设计模式之间的关系. 软件开发中疑难问题: 软件复杂庞大 很多软件进入维护阶段 需求的不断变更 软件开发中存在很多其他的问题,上面只是从程序开发和设计的角度看到的部分问题.需求解决上面软件开发中的问题,就要求我们编写(设计)的软件具有很好的可读性.可维护性和可扩展性.我们需要保证代码具有高内聚低耦合. 下面将简单介绍面向对象的一些基本特性.设计原则,以

面向对象编程思想的哲学起源(转载)

http://www.xuebuyuan.com/566309.html 本来想象着写一整篇「面向对象编程思想的哲学起源」这样的题目,笔走纸上,方才发现这样的题目足够出本书,知识不够,写不动.但心里还是想写点自己的所思所想. 全篇就拿JAVA来举例了.众所周知,面向对象的四大基本要素:抽象(Abstract).封装(Encapsulation).继承(Inheritance).多态(Polymorphism). 很多人坚持<逻辑学>是唯物哲学的基础,不懂,姑且不论.哲学就是对自然学科的抽象,看

面向对象编程思想(前传)--你必须知道的javascript(转载)

原文地址:http://www.cnblogs.com/zhaopei/p/6623460.html阅读目录 什么是鸭子类型 javascript的面向对象 封装 继承 多态 原型 this指向 call apply band js中的闭包 什么是高阶函数 在写面向对象编程思想-设计模式中的js部分的时候发现很多基础知识不了解的话,是很难真正理解和读懂js面向对象的代码.为此,在这里先快速补上.然后继续我们的面向对象编程思想-设计模式. 什么是鸭子类型 javascript是一门典型的动态类型语

[Javascript] 面向对象编程思想

1.创建对象 1.1 new 用new进行创建对象: var user = new Object(); user.age = 12;//同时为对象添加属性 user.name = 'ajun'; 1.2{} 用{}创建对象,如: var user = { 'name':'ajun, 'age':12 } 这里同时候为user添加了两个属性分别为:name,age 在以上代码稍加改造,你还可以为一个对象添加一个方法,如: var user = { 'name':'ajun', 'age':12 '

第三章面向对象编程思想

""" 编码规范: 类名首字母应以大写字母开头 类的成员/属性: 成员属性 实例化对象的属性: self.name=name 可以被访问,也可以在类的外部被修改 私有属性 实例化对象的私有属性: self.__age=age 属性名前加两下划线 外部无法被访问, 也不能被修改,只能内部访问和修改 想要在外部访问只能自定义一个方法了 强制访问 私有属性: p._People__age 对象名._类名__私有属性 公共属性: 类的属性,也叫静态属性,他是在类的内部定义的 clas

面向对象编程思想2s

面向对象编程思想 抽象 封装和数据隐藏 多态 继承 代码的可复用性 面向对象分析 五个层次.五个活动组成 目的 1.获得系统的对象个体.个体内部的状态.个体与个体间的交互 活动 1.建模系统功能 2.发现并且确定业务对象 3.组织对象并确定其关系 抽象 舍弃个别的.非本质的特征,抽取共同的.本质的特征 ss 原文地址:https://www.cnblogs.com/cnblogzaizai/p/12028791.html