面向对象编程

什么是面向对象编程

面向对象思想是程序设计思想之一,这个问题,要结合另一个程序设计思想,即面向过程编程来理解。

一、通俗解释:

面向对象 (Object Oriented,简称OO)

  看名字它是注重对象的。当解决一个问题的时候,面向对象会把事物抽象成对象的概念,就是说这个问题里面有哪些对象,然后给对象赋一些属性和方法,然后让每个对象去执行自己的方法,问题得到解决。

 

面向过程 (Procedure Oriented,简称PO)

  从名字可以看出它是注重过程的。当解决一个问题的时候,面向过程会把事情拆分成: 一个个函数和数据(用于方法的参数) 。然后按照一定的顺序,执行完这些方法(每个方法看作一个过程),等方法执行完了,事情就搞定了。

 

例子 : 打麻将 

面向过程: 打麻将 (你,我,他)

---------解决问题 拆成一个动作,把数据丢进去

面向对象: 我.打麻将(你,他) or 你.打麻将(我,他) or 他.打麻将(我,你)

---------解决问题 抽象出对象,对象执行动作 。

 

 二、面向对象和面向过程的优缺点:

面向过程

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。

缺点:没有面向对象易维护、易复用、易扩展

 

面向对象

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

缺点:性能比面向过程低

 

 三、面向对象编程特性:

来源:知乎用户老刘

 

一切皆为对象

在面向对象编程世界里,一切皆为对象,对象是程序的基本单元,对象把程序与数据封装起来提供对外访问的能力,提高软件的重用性,灵活性和扩展性。

 在面向对象编程中,通常把对象的数据(字段)称为属性,把对象的行为称为方法

 

 

 方法(对象行为):开车、提速、加油

属性(对象的数据):最大速度、燃料


对象与类

在面向对象编程中,最常见的表现就是基于类(Class)来表现的,每一个对象实例都有具体的类,即对象的类型。使用类的面向对象编程也称为基于类的编程(Class-based programming),如常见的Java,C++;而与之类似的有基于原型的编程(Prototype-based programming),如JavaScript。

  • :定义对象的数据格式(属性类型)和可用过程(方法),同时也可能包含类成员的数据(如,常量)和过程(如,静态方法),类其实就是对象的类型/原型(prototype)。
  • 对象:类的实例,通过类实例化出来的具体实例。

车car就是类class,而甲壳虫、mini、高尔夫就是具体对象实例object

 

 

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

 

封装

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

继承

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

多态

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




posted @ 2021-06-10 17:33  渔人张  阅读(303)  评论(0)    收藏  举报