Java之面向对象程序设计概述

版权声明:转载请注明出处 https://blog.csdn.net/qq_41431457/article/details/85305828
  • 前言

       面向对象程序设计(OOP),是当今主流的程序设计方式,取代了20世纪70年代“过程化设计”程序设计。Java是纯面向对象的语言,用气进行面向对象的软件开发非常方便、高效。


  • 面向对象术语

1、对象

      这里以一个现实世界对象为例,如一只猫,可以说猫具有许多属性(或状态),如猫名、猫龄和颜色;猫还具有各种行为,如睡觉,吃饭和发情。在OOP的世界里,对象也具有许多属性和行为,使用面向对象的技术,就可以一只猫建立一个模型。

2、类

  类是0OP中最重要的术语。通常情况下,类被称为模板或者蓝本。对象就是由这些模板或者蓝本产生的。属于某个类的特性和行为总称为该类的成员。这里仍以上面提到的猫为例,猫的特性,包括猫名、猫龄和颜色称为类的属性,用变量表示;而猫的行为如玩、睡觉称为类的方法,用函数表示。

3、继承

       OOP的主要优点之一是使用继承实现类之间的共享数据和方法的机制。在我们日常生活中,儿子总会继承父亲的一些特性:所有种类的汽车都需要实现汽车的基本功能:所有种类汽车都需要实现汽车的基本功能,所有种类的电脑都要实现电脑的基本功能,诸如此类的例子很多。而这些现象,都可以使用继承来实现。新建的类称为子类,该类需要继承的类称为超类或者父类。

       子类可以继承类的所有属性和方法。子类通常会定义其他方法和属性或重写超类中定义的方法和属性,子类还可以重写(为其提供自己的定义)在超类中定义的方法。

       利用继承,不必重新创建两个类共有的所有代码,而只需对现有类加以扩展即可。例如,可以构建一个名为 Animal的超类,其中包含所有动物的共有特性和行为。可以创建一个继承 Animal类的Cat类,不必为Cat类再次重复编写关于动物共有特性和行为的代码。



4.接口

       接口可以描述为类定义的模板,实现接口的类实现该模板。在猫的示例中,接口类似于猫的蓝图:通过蓝图可了解需要的部分,但并不一定提供关于这些部分的组装方法或工作原理的信息。可将接口看作是用于将两个若没有接口便没有任何关系的类关联起来的“编程约定”。例如,多个程序员一起工作,每个程序员开发同一个应用程序的不同部分(类)。设计应用程序时,约定不同的类使用一组方法进行通信。因此,创建一个接口用以声明这些方法、方法的参数及其返回类型。任何实现此接口的类都必须提供这些方法的定义,否则将出现编译错误。

5、封装

       封装是OOP中另一个非常重要的概念,也称为数据隐藏。在完美的面向对象的设计中,对象被看作包含或封装功能的“黑匣子”。程序员应当能够在仅知道对象的属性、方法和事件的情况下与对象进行交互,而不需知道其实现的详细信息。此方法使程序员可以在更高的抽象层次上思考,并能提供可用于构建复杂系统的组织框架。同时利用封装可以进行成员访问控制。成员的详细信息对于对象外的代码是私有的和不可见的。对象外代码只能与对象的编程接口交互,而不是与实现详细信息交互。只要编程接口不变,对象的创建者就可以在不对对象外代码做任何更改的情况下,更改对象的具体实现。


  • 面向对象程序设计方法的优缺点

        利用面向对象的思想求解问题,使人们的编程与实际的世界更加接近,所有的对象被赋予属性和方法,使编程更加富有人性化。同时利用OOP求解问题,具有更好的重用性、可扩展性、更易管理和维护。


1、可重用性

       软件由各个模块组成,可重用性就是该软件的模块可以被重复利用,不仅用于该项目,还可用于其他项目。对于代码级,可重用性指类或者方法的重复使用,避免对于同一功能多次实现产生多余代码。可重用性是OOP的一个核心思想。OOP中的抽象、继承、封装等都可服务于可重用性,利用可重用性构建程序,优点是显而易见,不仅减少工作量,提高工作效率;利用已有的块进行开发,更能够提高程序质量。


2、可扩展性

       可扩展性即软件或者程序能够很方便地进行修改和扩充。对于软件产品来说,修改和扩充是必不可少的,一是不断地修订保证程序稳定;二是可以不断满足用户新的需求。由于继承、封装、多态等特性,面向对象方法可以设计出高内聚、低耦合的系统结构,使得系统更灵活,更容易扩展,而且成本较低。

3、易于管理和维护

       面向过程的开发方法,都是以函数为基本单元。所以当开发项目不断扩大时,这样的函数单元将变得不计其数,这样时不利于管理和维护的。而使用OOP后,以类作为开发的基本模块,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便的,成本也较低。


Ps:要考试了,什么都不会,前面的东西跟C语言差不多,跳过了,直接上手面向对象这一章,把书上的概念的敲到blog上,加深理解吧。

猜你喜欢

转载自blog.csdn.net/qq_41431457/article/details/85305828