面向对象的思想是上个世界60年代出现的,一些比较典型的面向对象的编程语言包括JAVA、C++等。很多脚本语言也支持面向对象的语法比如PHP、Python。
什么是面向对象呢?它是一种现实对象的建模方法,通过对象这种数据结构来映射现实世界的物质、关系等等,在JAVA编程思想中有一句话总结万物皆对象。比如我们看到的人、动物、植物等等,包括了这个东西的静态本质的东西就是属性,比如人有眼睛、鼻子、耳朵、腿,还包括了对象的动态行为包括人可以走、跑、跳、吃、喝、拉、撒、睡称之为方法。所以对象这个东西就可以理解为一种特殊的数据结构,这个结构包括了要描述对象的静态属性和动态行为:Object{properties,actions}。人是一种通用描述,因为现实中每个人都有不同,所以我们把人这个对象描述为‘人类’。所以大家看到了,类是一组对象的共同抽象,这里就设计到了面向对象程序设计的第一特征:抽象。在C语言编程的时候是没有类这一层抽象的,主要围绕某个功能来实现,而功能对应某个算法的步骤或流程所以称之为面向过程的编程。
有了类的概念我们如何映射到某一个具体的人呢,于是就有了面向对象的第二个重要的概念:继承和多态。故名思议,继承就是传承的意思,比如古话云龙生龙、凤生凤,老鼠生来会打洞说的就是这个意思,直接从字面上理解就好了,被继承的类就称为父类,而继承的类就称为子类。能从多个类中继承,比如狮虎兽,就是同时继承了狮子和老虎的特征,这种行为称为多继承,只能从一个类中继承的称为单继承。比如C++就支持多继承语法,而JAVA只支持单继承。多态是指一个类可以有多个类型的子类,比如水果包括了苹果、梨、香蕉、草莓等等,他们都具有水果的基本属性同时又各有不同。多态描述了世界的多样性,抽象表达了世界的统一性。
面向对象最后一个特征就是封装,封装的思想就是保密的意思,类中不希望别人看到的属性和方法我就可以用封装的概念保护起来,封装包括了:可以公开访问、包和子类可访问、私有三个层次。
在没有面向对象编程语言之前,程序设计主要通过变量、函数和文件来实现,软件复用的层次主要在函数、文件层面,缺乏更大粒度的复用单元。有了面向对象语言以后,软件描述能力更接近真实世界,复用的层次上升到了类、包,他们既包含静态结构又包含动态方法的层次,使得功能和架构级的复用成为可能。
![1fe4720def37f1dd9b371d3c81c80e18.png](https://i-blog.csdnimg.cn/blog_migrate/86448311a2d2b70f3fffa513bc9962dd.jpeg)