首页 > 代码库 > 面向对象编程

面向对象编程

     本文内容仅为个人观点。

     面向对象编程(Object-Oriented Programming)在JAVA中处于核心的地位,所以在正式了解Java语言之前,我们先回顾一下什么叫面向对象编程。本文将分成三部分内容来展开对面向对象编程的介绍,首先介绍一下面向对象的基本概念及其主要特征,然后简单总结一下面向对象的特征,最后总结一下面向对象编程的优点。

   、面向对象的概念

    1.1、抽象

            面向对象的本质元素之一就是抽象,我们可以通过抽象来将复杂的系统抽象为层次分明的、易管理的模型。抽象注重于系统的行为和特征,认为一个系统的意义在于如何利用系统本身的属性(特征)或者与自身子系统或与其他系统进行交互(行为)。举一个不太恰当的例子,对于汽车这么一个交通工具而言,它的系统复杂度可不是我们一个普通人所能了解的。但是为什么我们大多数人都能使用汽车这个交通工具?用抽象的思维去分析我们不难发现,我们可以把汽车这个系统抽象为驾驶、制动等几个层次。我们可以仅仅了解驾驶这个较为简单的子系统,使其与其他子系统交互,从而能达到使用汽车这个复杂的系统。当然,汽车是有不同的品牌的,不通品牌的汽车类型是不一样,其驾驶系统也有着差别。但我们都能抽象为一个东西吗?那些差别我们又该怎么处理?这部分内容在接下来的类和对象之间进行介绍。总而言之,抽象是面向对象的本质,是真正理解面向对象编程的思想前提。如果在你的代码中不能将抽象这思想体现出来,即使你使用的是面向对象的语言,那么也不能称为是面向对象编程,那只是了解了面向对象编程语言的语法而已。

    1.2、类和对象

    对象一般是指在内存上一段具有意义的区域,由于在内存中,因此能直接进行操作。在面向对象语言中,对象一般是类在内存中装载的实例,具有相关的成员变量和成员函数。类定义了一组对象共享的结构和行为,是一种逻辑结构,因此,一般情况下类不能被直接操作,只有被实例化为对象时,才会变得可操作。从本质上来说,类其实是一种数据类型,和int、char等基本类型类似。但它与基本类型有着很大的不同,因为它强调的是类型,而不是数据。类是对某种对象的定义,描述了一个对象能够做什么以及怎么去做的过程它们是可以对这个对象进行操作的程序和过程。同时它包含有关对象行为方式的信息,包括它的名称、方法、属性和事件。

  二、OOP三大特征

    2.1、封装(encapsulation)

    封装是将数据和代码绑定在一起的机制,并且保证代码和数据不受到封装体外部的干扰个误用。封装的基础是类,在类中定义了数据成员和成员方法。类中的每个成员可以表示为私有的或者说公有的。私有成员都是隐藏的,只向外部提供有限的接口,所以能够保证内部的高内聚性和与外部的低耦合性。用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员,能够增强安全性和简化编程。

    2.2、继承(inheritance)

    继承是一个对象获取另一个对象属性的过程,是一个类(子类)自动获取另一个类(父类)数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。

    2.3、多态(polymorphic)

    多态是允许将一个接口应用于一类通用动作的特性。多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。多态,是面向对象的程序设计语言最核心的特征。多态,意味着一个对象有着多重特征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。

   三、面向对象编程的优点

       1、层次明显,效率高
       在进行开发设计时,根据设计的需要将系统抽象,产生类。开发者只需完成各自负责的子系统及完善接口,提高了开发速度。

       2、维护简单
                    在面向对象思编程中,一个类往往代表一个功能或者其中一个步骤,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便的。
       3、易扩展
       由于功能是被封装在类中的,并且类是作为一个独立实体而存在的,提供一个类库就非常简单了。使得系统更灵活、更容易扩展,而且成本较低。

面向对象编程