初识Java(Java类和对象-面向对象概述)

一、面向对象概述

    面向对象思想是人类最自然的一种思考方式,它将所有预处理的问题抽象为对象,同时了解这些对象具有相应的属性以及展示这些对象的行为,已解决这些对象面临的一些实际问题,这样就在程序开发中引入了面向对象设计的概念,面向对象设计实质上就是对现实世界的对象进行建模操作。

    1.1  对象

    现实世界中,随处可见的一种事物就是对象,对象是事物存在的实体,如人类、书桌、计算机等。人们解决问题的方式总是把复杂的事情简单化,思考这些对象都是由哪些部分组成的。通常都会将对象划分为两个部分,即静态部分与动态部分。静态部分,这个部分称为 " 属性 " ,任何对象都会具备其自身属性,如一个人,其属性包括高矮、胖瘦、性别、年龄等等。这个人可以哭哭泣、微笑、说话、行走,这些事这个人具备的行为(动态部分)。人类通过探讨对象的属性和观察对象的行为了解对象。

    在计算机的世界中,面向对象程序设计的思想要以对象来思考问题,首先要将现实世界的实体抽象为对象,然后考虑这个对象具备的属性和行为。

    1.2  类

    不能将所谓的一个事物描述成一类事物,如一只鸟不能称为鸟类。如果需要对同一类事物统称,那就类。

    类就是同一类事物的统称,如果将显示世界中的一个事物抽象成对象,类就是这类对象的统称,如鸟类、人类等。类是构造对象时所依赖的规范,如一只鸟具有一对翅膀,它可以用这对翅膀飞行,而基本上所有的鸟都具有有翅膀这个特征和飞行的技能,这样具有相同特性和行为的一类事物就称为类。类是世间事物的抽象称呼,而对象则是这个事物相对应的实体。如果面临实际问题,通常需要实例化类对象来解决。

    类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体称为类。

    在 Java 语言中,类中对象的行为是以方法的形式定义的,对象的属性是以成员变量的形式定义的,而类包括对象的属性和方法。

    1.3  封装

    面向对象程序设计具有以下特点 : ( 1 )  封装性 ;( 2 )  继承性 ; ( 3 )  多态性 。

    封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。例如,用户使用计算机时,只需要使用手指敲击键盘就可以实现一些功能,无须直到计算机内部是如何工作的,即使可能直到计算机的工作原理,但在使用计算机时也并不完全依赖于计算机工作原理这些细节。

    采用封装的思想保证了类内部数据结构的完整性,应用该类的用户不能轻易地直接操作此数据结构,只能执行类允许公开的数据。这样就避免了外部操作对内部数据的影响,提高了程序的可维护性。

    1.4  继承

    类与类之间同样具有关系,如一个百货公司类与销售员类相联系,类之间的这种关系被称为关联。关联主要描述两个类之间的一般二元关系,例如,一个百货公司类与销售员类就是一个关联,学生类与教师类也是一个关联。两个类之间的关系有很多种,继承是关联中的一种。

    当处理一个问题时,可以将一些有用的类保留下来,在遇到同样问题时拿来复用。设计软件的代码使用继承思想可以缩短软件开发的时间,复用那些已经定义好的类可以提高系统性能,减少系统在使用过程中出现错误的几率。

    继承性主要利用特定对象之间的共有属性。例如,平行四边形是四边形,正方形、矩形也都是四边形,平行四边形与四边形具有共同特性,就是拥有 4 个边,可以将平行四边形类看做四边形的延伸,平行四边形复用了四边形的属性和行为,同时添加了平行四边形独有的属性和行为,如平行四边形的对边平行且相等。这里可以将平行四边形类看作是从四边形类中继承。在 Java 语言中将类似于平行四边形的类称为子类,将类似于四边形的类称为父类或超类。可以说平行四边形是特殊的四边形,但不能说四边形是平行四边形,也就是说子类的实例都是父类的实例,但不能说父类的实例是子类的实例。

    继承关系可以使用树形关系来表示,父类与子类存在一种层次关系。一个类处于继承体系中,它既可以是其他类的父类,为其他类提供树形和行为,也可以是其他类的子类,继承父类的属性和方法。

    1.5  多态

    将父类对象应用于子类的特征就是多态。以图形类来说明多态,每个图形都拥有绘制自已的能力,这个能力可以看做是该类具有的行为,如果将子类的对象统一看做是父类的实例对象,这样当绘制图形时,简单地调用父类也就是图形类绘制图形的方法即可绘制任何图形,这就是多态基本的思想。

    多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类及相关类。该统一风格可以由父类来实现,根据父类统一风格的处理,可以实例化子类的对象。由于整个事件的处理都只依赖于父类的方法,所以日后只要维护和调整父类的方法即可,这样降低了维护的难度,节省了时间。

    多态的实现并不依赖具体类,而是依赖于抽象类和接口。

    图形类作为所有图形的父类,具有绘制图形的能力,这个方法可以称为“ 绘制图形 ”,但如果要执行这个“ 绘制图形 ”的命令,没有人知道应该画什么样的图形,并且如果要在图形类中抽象出一个图形对象,没有人能说清这个图形究竟是什么图形,所以使用“ 抽象 ”这个词来描述图形类比较恰当。在 Java 语言中称这样的类为抽象类,抽象类不能实例化对象。在多态的机制中,父类通常会被定义为抽象类,在抽象类中给出一个方法的标准,而不给出实现的具体流程。实质上这个方法也是抽象,如图形类中的“ 绘制图形 ”方法只提供一个可以绘制图形的标准,并没有提供具体绘制图形的流程,因为没有人知道究竟需要绘制什么形状的图形。

    在多态的机制中,比抽象类更方便的方式是将抽象类定义为接口。由抽象方法组成的集合就是接口。接口的概念在现实中也极为常见,如不同的五金商店买来螺丝帽和螺丝钉,螺丝帽很轻松地就可以拧在螺丝钉上,可能螺丝帽和螺丝钉的厂家不同,但这两个物品可以轻易地组合在一起,这是因为生产螺丝帽和螺丝钉的厂家都遵循着一个标准,这个标准在 Java 中就是接口。可以将“ 绘制图形 ”作为一个接口的抽象方法,然后使图形类实现这个接口,同时实现“ 绘制图形 ”这个抽象方法,当三角形类新药绘制时,就可以继承图形类,重写其中的“ 绘制图形 ”方法,并改写这个方法为“ 绘制三角形 ”,这样就可以通过这个标准绘制不同的图形。

    欢迎大家提出错误,建议,大家一起进步。


猜你喜欢

转载自blog.csdn.net/js940814/article/details/79935195