我们不止一次提起过“面向对象”,那么究竟什么是面向对象呢?
面向对象技术,强调在软件开发过程中面向现实世界中的事物,使用人们在生活中的规律或者方法描述事物。
一、基本概念
1.对象(Object)和类(Class)。
对象,是一个实体。包括状态、行为和标识。状态就是对象的静态信息,行为描述动态信息,标识说白了,就是对象的名字。
类,是一组具有相同属性、行为、关系和语义的对象的集合。一个类包括属性和方法。属性描述的是类的静态信息,方法描述动态信息。在面向对象中,我们把事物分成一个个类,用属性和方法描述他们。
对象,比如一棵树,一台电脑,就是具体的实例。
类,比如动物类,植物类,微生物类等。就是我们平时生活中分类的那个“类”。
类和对象的关系:一个类是一组对象的计集合,一个对象是一个类的实例。
2.属性和操作。
属性,描述的是类的静态信息。类实例化,就是描述一个对象,就是给属性赋值。
操作,是通过方法实现的。我们通过操作去编辑属性的值。
3.接口。
接口,比如我们常用到的USB接口。当然此接口非彼接口。我们可以这样理解,我们把U盘插入USB接口,然后电脑识别了。这个接口就是连接电脑和U盘的。同理,接口,就是连接两个事物的一种规范。
类和接口有什么区别呢?就是类要给出相应的代码实现,而接口,只需要写出方法的签名。
4.组件。
组件可以是源程序、运行时的动态库,还可以是可执行程序。
5.包。
包是一个逻辑划分,把代码分为一个个模块。使更有层次。
6.子系统。
子系统一般是按照功能划分的。
7.关系。
这个相信大家都很清楚了:关联、依赖、泛化、实现。在上一篇博客中已经详细介绍了。
二、三个特点
1.封装。
封装,就是把现实事物封装成抽象的类,并且,类可以使用一定的方法设置权限,只让一部分类或者对象对其进行操作。
封装的定义:隐藏属性,方法,与方法实现细节的过程称为封装。
(1)隐藏属性方法。比如在VB中,我们通过label.caption访问一个label的caption属性。但是他的属性并不是全部公开的。这就是封装的一种表现。
我们可以通过访问修饰符(Public、Private等)实现封装。
2.继承。
继承,就是我们平时说的晚辈对父类的继承。不过在这里继承的是属性和方法。
继承的定义:在一个类的基础上定义一个新类,原有的类叫父类,新生的类叫做子类。继承的过程,就是从一般到特殊的过程。例如,生物可分为三类:动物、植物和微生物。动物、植物和微生物就是生物的子类。
继承有以下特点:子类拥有父类的属性和方法;子类可以重写父类的属性和方法;子类可以有自己的属性和方法。
继承的方式有三种:实现继承、接口继承、可视继承。
实现继承是指使用父类的属性和方法而无需额外编码的能力;
接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;
可视继承是指子类使用父类的外观和实现代码的能力。
3.多态。
首先,我们要理解,没有继承,就没有多态。
多态,不同对象收到相同信息产生的行为不同。也有的说,子类继承父类,然后重写父类的操作,实现了不同的操作。大同小异。例如,狗和鸡收到“叫”的信息,产生的动作,分为鸡鸣和狗吠。
多态实现的方式有两种:覆盖和重载。
覆盖是指子类重新定义父类虚函数的做法。虚函数就是在类的继承中可以被改写的函数。
重载是指允许存在重名函数,但是其参数表不同。
4.作用
封装可以隐藏实现细节,使得代码模块化。就是封装后,我们可以修改代码模块的内部,而无需修改该类的客户代码。
继承可以扩展已存在的类,同时简化对事物的描述,实现代码的重用性。
封装和继承都实现了代码的重用。
而多态则是实现了另一目的——接口重用。也就是,接口都是一样的,但是操作的方式和结果不同。
林林总总,写了很多,对于面向对象,我的理解还很浅。不足之处,希望大家指教!