面向对象的编程思想

面向对象的编程思想

一、什么是面向对象?

面向对象编程的核心思想把构成问题的各个事物分解成各个对象建立对象的目的不是为了完成一个步骤,而是为了描述一个事物在解决问题的过程中经历的步骤和行为对象作为程序的基本单位将程序和数据封装在一起,以提高程序的重用性,灵活性和可扩展性。类是创建对象的模板,一个类可以创建多个对象。对象是类的实例化。

(将现实世界中的事物抽象为对象,每个对象都拥有自己的属性和行为。属性描述了对象的状态,而行为则定义了对象可以执行的操作。例如,我们可以将一个汽车抽象为一个对象,它拥有颜色、品牌、速度等属性,以及启动、加速、刹车等行为。

类是抽象的,不占用存储空间;而对象是具体的,占用存储空间。

二、面向对象有三大特性:封装,继承,多态

封装(Encapsulation):

封装是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。简单来说,就是将一个对象共有的属性和行为抽离出来封装成一个类

继承(Inheritance):

继承是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。简单来说,继承允许我们创建一个新的类,它继承了另一个类的属性和行为,子类可以拥有父类所有可以访问的字段和方法。同时,通过继承,我们可以建立类与类之间的层次关系,形成一个类的家族树。

多态(Polymorphism):

多态是同一个行为具有多个不同表现形式或形态的能力。简单来说,是同一个接口,使用不同的实例而执行不同操作。(例如:黑白打印机和彩色打印机相同的打印行为却有着不同的打印效果)

多态还分为静态多态和动态多态,静态多态的体现主要是方法重载,动态多态体现在方法重写,父类接收不同子类的实例,接口接收不同实现类的实例。

  • 对象类型和引用类型之间存在着继承(类)/ 实现(接口)的关系;
  • 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
  • 如果子类重写了父类的方法,最终执行的是子类覆盖的方法,如果没有则执行的是父类的方法。

三、说一说类、对象、成员变量和成员方法的关系和理解

类:一组相关的属性和行为的集合,是一个抽象的概念。可以将类看做是创建对象蓝图,使用事物的属性特征和行为特征来描述该类事物,对象根据这个蓝图去具体实现某个东西。

现实中,描述一类事物:

  • 属性:就是该事物的状态信息。

  • 行为:就是该事物能够做什么。

对象:是一类事物的具体表现形式,具体存在的个体。对象是类的一个实例,必然具备该类事物的属性和行为。

成员变量:事物的属性

成员方法:事物的行为

上面我们说了这几个概念,那么到底应该怎么理解呢?

类就是对一些具有共性特征,并且行为相似的个体的描述。

例1:比如小李和老张都有姓名、年龄、身高、体重等一些属性,并且两人都能够进行聊天、运动等相似的行为。

由于这两个人具有这些共性的地方,所以我们把它抽象出来,定义为一个类——人类,而小李、老王正是这个类中的个体(对象),而每一个个体才是真正具体的存在,光提到人类,你只知道应该有哪些属性行为,但你不知道他具体的一些属性值,比如你知道他属于 “人类” 所以他应该拥有姓名,年龄等属性,但你并不知道他具体叫什么,年龄多大了。而小李和老王这两个具体的对象,却能够实实在在的知道老王今年30岁了、身高175等值。

例2:比如来说,给一张“伞”的蓝图,我们设计出了晴雨伞,剑伞等等,你会发现,这些伞都有相同的行为呀----遮雨。

所以可以得出结果:

  • 类是对象的抽象(模板、蓝图),而对象是类的具体实例。类描述了一组有相同属性和相同方法的对象。
  • 类是抽象的,不占用内存,而真正根据类实例化出具体的对象,就需要占用内存空间了。

面向过程和面向对象的优缺点和区别

A:面向过程

优点:性能上它是优于面向对象的,因为类在调用的时候需要实例化,开销过大。

缺点:不易维护、复用、扩展

用途:单片机、嵌入式开发、Linux/Unix等对性能要求较高的地方

B:面向对象

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护

缺点:一般来说性能比面向过程低

低耦合:简单的理解就是说,模块与模块之间尽可能的独立,两者之间的关系尽可能简单,尽量使其独立的完成成一些子功能,这避免了牵一发而动全身的问题。这一部分我们会在面向对象学习结束后进行系统的整理和总结。

总结:只通过教科书后的例题是无法体会到面向过程所存在的问题的,在一些小例程中,面向过程感觉反而会更加的简单,但是一旦面临较大的项目,我们需要编写N个功能相似的函数,函数越来越多,代码量越来越多,你就知道这是一场噩梦了。

区别:

面向过程:强调步骤。

面向对象:强调对象,这里的对象就是洗衣机

举例:

洗衣服:

面向过程:把衣服脱下来–>找一个盆–>放点洗衣粉–>加点水–>浸泡10分钟–>揉一揉–>清洗衣服–>拧干–>晾起来

面向对象:把衣服脱下来–>打开全自动洗衣机–>扔衣服–>按钮–>晾起来

 参考链接:

什么是面向对象的编程思想?_什么是面向对象编程思想-CSDN博客

什么是面向对象?(通俗易懂) - BWH_Steven - 博客园 (cnblogs.com)

面向对象的思想(通俗易懂)_写出你对面向对象思想的理解-CSDN博客

深入浅出理解面向对象编程-百度开发者中心 (baidu.com)

什么是面向对象,它的三个基本特征:封装、继承、多态-CSDN博客

  • 28
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄奕子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值