Java的对象、类、方法和接口

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.1什么叫对象?什么叫方法?什么叫面向对象的程序设计?

面向过程的程序设计语言最重要的特点是按照解决问题的一个一个步骤来设计程序。这种语言是与解决相对比较简单的问题,当程序规模较大时,将显得纷繁复杂。

“对象”原来是描述自然界时使用的一个词语。比如,现在我正在写讲义,桌上的稿纸、手中的笔、案头的参考书、身后的电脑以及窗外的鸟都可以成为对象面向对象,就是将世界看成由许多彼此之间能联络的对象组成。

不少程序设计语言借用了对象这个词语作为一个专用名词,此时,对象也是具有状态和行为两个特征。在程序设计中,对象的状态时相对处于静态的,用变量来描述和表达;而对象的行为时动态的,他们通过“方法”来实现和完成,所以方法一定是实现对象行为的语句块。从功能上讲,方法和子程序、函数很相似。变量和方法是彼此有关、相互依赖的。当然,计算机都是用数据来表示对象的状态的,也是通过对数据的操作和修改来体现某个方法的功能的。

1.2 Java作为面向对象的程序设计语言有什么特点?

Java是面向对象的程序设计语言,从面向对象这个角度看,体现了如下三个特点:

a:封装性—面向对象的程序设计语言都是把数据和处理数据的操作结合在一起而构成一个整体,这就是对象。对象的使用者只能看到对象的外部特性,比如,其主要功能、如何调用等,而看不到内部如何实现这些功能。作为面向对象的程序设计语言,程序中的数据就是变量,程序对数据作处理则成为方法。变量和方法都被封装在对象中。所以,一个对象就是变量和方法的集合,其中变量表明这个对象的状态,方法实现这个对象所具有的行为,而且在程序中将这些变量和方法进行封装,使它们成为一个模块,再用一个名字来代表这个模块。这样,以后得更高层的程序设计中,就不必关心某个对象的行为到底是怎样实现的。可见,将对象封装就是为了使模块尽可能少地展现其内部细节,而只是以一种界面来面向外部。

对象的封装性减少了程序各部分之间的依赖,使程序的复杂性降低,而可靠性提高,并便于修改。

b:继承性—面向对象的程序设计中,对象是从类创建出来的,这一点即将在下面的解答中说明。在Java中,许多类组成层次化结构。一个类的上一层成为父类,而下一层成为子类。一个类可以继承其父类的变量和方法,而且这种集成具有传递性。就是说,一个类可以继承其上一层和其再上一层的变量和方法。这种可传递的继承性使得下层多个相似的对象可以共享上层类的数据和程序代码,而子类又可以再继承父类的基础上增添新的内容和功能。这种代码共享和代码可增添的继承特性使Java既灵活又方便提高效率。

c:通信相关性—一个对象往往涉及多个行为。体现在程序设计中,一个对象往往包含多个方法,每一个方法对应一个行为。所以,一个对象完成某个动作也就是程序执行相应的方法。于是,就涉及对象之间通过交互来实现复杂的行为,这叫对象之间的通信。

利用通信可以实现一个对象往另一个对象的信息传递。信息传递设计三个要素:一是信息接收对象;二是接收对象中用哪个方法完成指定的动作;三是比方

法需要的参数。由于信息传递的要素非常清晰,所以用在变成中将很方便。

这种通信相关性使得许多复杂功能得以实现,却有能避免编程的错综复杂。

2.1 什么叫释放对象?Java中怎么释放对象?

所谓释放对象,实质上就死后释放掉分配给对象的内存空间。Java中,对象的释放是自动完成的,不需要程序员在编程时关注这一点。Java运行系统具有所谓“垃圾收集”机制,这种机制会周期性地检测对象是否还在使用,如发现有长期不用的对象,则给予释放,回收分配给这些对象的内存,这就是垃圾收集。具体运行中,垃圾收集是由一个成为Java垃圾收集器的程序实现的。当一个对象在使用时,Java运行系统会将其对象的内存空间设置标记;而当一个对象结束使用时,会自动清除标记。有了这种标记设置和清除的规则,Java垃圾收集器就可以通过周期性地扫描所有Java对象有关的内存区域标记,将没有标记的内存区列入可供分配的范畴,从而起到垃圾收集作用。

因为垃圾收集器涉及读/写操作,相对较慢,所以,尽管扫描过程是周期性进行的,但垃圾收集操作却以较低优先级留待系统空闲周期中才得以完成。除了自动收集垃圾外,Java运行系统也允许程序员通过调用方法system.gc()请求垃圾收集。此外,Java系统开始运行时,会自动调用一个名为finalize()的方法,此方法的功能之一也是释放对象所占的内存。

3.1 类的结构和属性

在Java程序中,类是基本的组成要素,所有对象都是由类创建的,新的类必须在已有类的基础上构造,这成为类的派生。大多数类都是派生得到的。派生得到的新类成为已有类的子类,而次已有类成为父类。

3.2 类是怎样一种结构?什么叫类的成员变量?

类的结构分为两部分,一是类的说明,二是类体。格式如下:

classDeclaration{ classBody }

a:类的说明—类的说明由关键字class、类的名字和类的属性三部分组成。关键字class用固定的小写格式,类的名字是由程序员起的,可以用任意一个名词,但书写格式必须符合Java编码规定,这两部分是类的说明中必须有的内容。类的属性石可选的,用来说明此类有关的各种特性,包括说明这个类的父类是哪一个,访问这个类有什么限制等。

b:类体—类体是类的主题内容,它包括两部分:变量说明和方法。在前面已经讲到,在Java的类中,变量表明类的状态,方法实现类的行为,正是这两部分内容构成了类体。习惯上将类中的变量成为类的成员变量。成员变量的类型可以为Java的任意数据类型。在一个类中,成员变量的名字是唯一的,但成员变量的名字可以和方法的名字相同。所以,将刚才列出的类的格式再具体化一些,那就应该如下所示:

class className{

member VariableDeclarations //变量说明

methodDeclarations //方法说明

}

在比较复杂的程序中,方法往往是由许多成分构成的方法体。方法体中包含此方法要用的变量(称为局部变量),还包含多个语句构成的语句组。

在类体中,通常首先列出成员变量,然后是方法,但这不是严格规定的。必须严格遵守的规则是:类的成员变量定义必须放在类体中,但又不能包含在某个方法中。

3.3 类的属性包含哪三方面的内容?举例说明怎样表示这些内容?并作综合。

类的属性用来说明三方面的内容,即:

a.指出此类的父类(extends部分) -- 大多数类都是从父类派生得到的,父类也被称为超类(SuperClass)。在类的属性中,用关键字extends和父类名构成一个语素来说明这一点。这个语素一般放在类名字和类体之间,即采用如下格式:extends SuperClass 比如:class ImaginaryNumber extends Number{...} 有许多类是从Java系统提供的软件包ng中的Object类派生来的,这样派生的类一般不再在属性中指出父类的名字。我们一般称这些类的父类为隐含的,实际上,其父类就是Object。Object是Java中最原始的类。可见,extends 部分是可选的;

b.指出此类提供的借口(implements部分) -- 接口是和类很相似的一种数据结构,接口专门供给类调用。如果一个类要调用。这里,我们要说明的是,如果一个类要调用接口,格式如下:implements InterfaceList其中,implements 是专门用来调用接口的关键字,而InterfaceList是接口的名字。比如,有一个名为Collection的接口被雷ImaginaryNumber调用,那么,类ImaginaryNumber 的属性中就可以看到有Implements部分:class ImaginaryNumber extends Number Implements Collection{...}

通常,Implements部分放在extends部分后面,但Implements部分也是可选的,并非每个类的属性中都有这部分内容;

c.指出类的特性(修饰部分) -- 大多数类都可以再派生出子类,但是出于安全性的考虑,Java规定有些类不能再派生出子类。这样,就有了一种特别的类叫最终类。在类的属性中用关键字final来说明这种属性。Final放在类属性的前面。比如final class ImaginaryNumber extends Number Implements Collection{...}在这个类定义中,前面用final指出类ImaginaryNumber是一个最终类。还有一些类不能创造出对象来,它们仅仅是为了让子类来继承而设计的,这些类称为抽象类。这也是一种特殊的类,在类的属性中用关键字abstract 来说明这种特性。Abstract也要放在属性的前面。比如:abstract class ImaginaryNumber extends Number Implements Collection{...}

可以想到,抽象类不可能是最终类;反过来,最终类也不可能是抽象类,它们的特性正好相反,所以,abstract不会和final同时出现。

我们已经知道,由类创建出对象,而多个类组成包,同一个包中的类可以互相访问。但是有一种类,它们不但可以被同一个包中的类访问,还可以被包以外的其它类或对象访问,这些类被称为公共类。在类说明中用public来说明公告类特性,public放在类属性的最前面。与public相对应,还有一些类只能被同一个包中的其它类访问,这种类用private来说明特性。实际上,public和private 表明了类的一种访问权限。

相关文档
最新文档