概述

2017-05-16 19:37:16
admin
740
最后编辑:admin 于 2017-10-10 09:10:17
Java是一种完全面向对象的编程语言,而类和对象是面向对象编程的基础。 类是对具有共同状态和行为规则的多个事物的统一描述。例如,“人”是一个类, 它可以表示地球上所有的人,而“张三”、“李四”等则是一个个的对象,或者说 它们是“人”这个类的一个个实例。在本章中,我们将详细介绍Java中类和对象 的使用方法。

传统的程序设计方法被称为面向过程的程序设计或结构化程序设计,我们在编写这类程序时,大量的时间花在了程序结构设计和算法设计等细节问题上。因此,使用这种方法开发的程序重用性差、难于维护。在这种情况下,面向对象的编程思想诞生了。

所谓面向对象的程序设计(Object Oriented Programming,简称OOP),其核心自然是对象。在这种编程思想中,我们编写程序时的主要精力放在了如何利用系统提供的各种对 象,以及在这些对象之间建立联系来完成编程目标上。对于对象来说,我们只关心它的功 能与对外接口,至于其内部的实现原理与方法,则不再予以考虑。

这种编程思想模拟了我们平常的思维方式。当我们需要解决一个问题时,首先会将该问题层层分解,转化为一个个的小问题,然后将这些小问题落实到人(对象),并在各人之 间建立合理的衔接程序与方法(对象之间的联系)。


1. 对象


现实世界中,对象(Object)就是客观存在的某一事物。一辆自行车,一台计算机, 它们都可以视为对象。对象普遍具有两个特征:状态(属性)和行为。比如,小鸟有名称、 体重、颜色等状态和飞行、觅食等行为;同样,自行车也有品牌、外观、重量等状态和刹 车、加速、减速等行为。

在面向对象程序设计中,对象是一组数据和相关方法的集合。程序中可通过变量向其 传递或获取数据,而通过调用其中的方法执行某些操作。在Java中,对象必须基于类来创建。


2. 类

类是用来描述一组具有共同状态和行为的对象的原型,是对这组对象的概括、归纳与抽象表达。


在面向对象程序设计中,可以让具有共同特征的对象形成类,它定义了同类对象共有 的变量和方法。通过类可以生成具有特定状态和行为的实例,这便是对象。

从某种程度上讲,Java编程就是设计类,在编程中可以釆用自定义方法或继承方法设 计一个类。此外,还可在编程时利用类来创建对象,然后改变对象变童值和调用对象方法 来实现程序的某些功能。


3. 封装

封装(Encapsulation)是将代码及其处理的数据绑定在一起的一种编程机制,该机制 保证了程序和数据都不受外部干扰且不被误用。理解封装性的一个方法就是把它想成一个 黑匣子,它可以阻止在外部定义的代码随意访问内部代码和数据。对黑匣子内代码和数据 的访问通过一个适当定义的接口严格控制。

例如,电脑主机里有电路板、硬盘等电子部件,而从外面只能看到它的外观。人们在 使用电脑时,只需了解它的外壳上的按钮都有哪些功能即可,而不需要知道主机足怎么实 现这些功能的。这些按钮就是主机筘连接外界的接口〇

封装的目的在于使对象的设计者和使用者分开,使用者不必知道对象行为实现的细节, 只需要使用设计者提供的接U來访问对象。

封装是OOP设计者追求的理想境界,它可以为开发员带来两个好处:模块化和数据隐藏。模块化意味着对象代码的编写和维护可以独立进行,不会影响到其他模块,而且有很 好的重用性;数据隐藏则使对象有能力保护自己,它可以自行维护自身的数据和方法。因 此,封装机制提高了程序的安全性和可维护性。


4. 继承


继承是面向对象程序设计中两个类之间的一种关系,是一个类可以继承只一个类(即 它的父类)的状态和行为。被继承的类称为超类或父类,继承父类的类称为子类。

例如,山地车、双人自行车都属于自行车,那么在面向对象程序设计中,山地车与双 人自行车都是自行车类的子类,自行车类是山地车与双人自行车类的父类。

一个父类可以同时拥有多个子类,这时这个父类实际上是所有子类的公共变童和方法 的集合,每一个子类从父类中继承了这些变量和方法。例如,山地车、双人自行车共享了 自行车类的状态,如双轮、脚踏、速度等。同样,每一个子类也共享了自行车类的行为, 如刹车、改变速度等。

然而,子类也可以不受父类提供的状态和行为的限制。子类除了具有从父类继承而来 的变量和方法外,还可以增加自己的变量和方法。例如,双人自行车有两个座位,增加了 一个变量即后座位,对父类进行了扩充。

子类也可以改变从父类继承来的方法,即可以覆盖继承的方法。例如,杂技人员使用 的自行车不仅可以前进,还可以后退,这就改变了普通自行车(父类)的行为。

继承使父类的代码得到重用,在继承父类提供的共同特性的棊础上增加新的代码,从 而使编程不必•切从头开始,进而有效提高了编程效率。


5. 多态性

多态性可以用“一个对外接口,多个内在实现方法”來表示。也就是说,我们可以在 一个类中定义多个同名方法,程序在调用某个方法时,系统会自动根据参数类型和个数的 不同调用不同的方法,这种机制被称为方法重载

此外,当我们利用继承由父类创建子类时,如果父类中的某些方法不适合子类,我们 无法删除它们,但可以重新定义它们,这被称为覆盖。如此一来,当我们利用子类创建对 象时,如果调用对象的某个方法,系统会首先在子类中查找此方法。如果找到,则调用子类的方法;否则,将向上査找,即在父类中査找此方法。这种情况被称为父类与子类之间 方法的多态性。






    • 在线客服
    • 关注微信
    • 联系电话
      • 欢迎咨询
      • 欢迎加入QQ群 303257430
    • 公众号:源宝网络
      • 联系电话及微信号 18902328227