理论教育 成员方法:Java面向对象程序设计中的基本组成单位

成员方法:Java面向对象程序设计中的基本组成单位

时间:2023-11-25 理论教育 版权反馈
【摘要】:在类中,除了成员变量以外,另一个重要的组成部分就是方法。在Java 语言中,方法是程序的基本组成单位,因此可以很方便地用方法作为程序模块来实现Java 语言程序。用户定义方法由用户按需要编写的方法。无返回值方法此类方法用于完成某项特定的处理任务,执行完成后不向调用者返回方法值。有参方法在方法定义及方法说明时都有参数,称为形式参数。例3.3:求两个整数的最大值方法。

成员方法:Java面向对象程序设计中的基本组成单位

在类中,除了成员变量以外,另一个重要的组成部分就是方法。方法就是描述用于解决复杂问题的一组代码段所组成的某个功能单元,通常由一系列数据成员和一些操作组成。方法是用来实现类的行为,其实相当于C 语言中的函数,但它一般只对类中的数据进行操作。一个方法,通常只完成某一项具体的功能,这样做使得程序结构清晰,利于程序模块的重复使用。

可以把方法看成一个“黑盒子”,方法的使用者只要将数据送进去就能得到结果,而方法内部究竟是如何工作的,外部程序是不知道的。外部程序所知道的仅限于输入什么给方法,以及方法输出什么。Java 中没有限制一个类中所能拥有的方法的个数。如果有什么限制,就只有main()方法可以作为应用程序的入口。

本书前面的例子已经使用过很多方法,比如System.out.println(),Math.random()以及main()方法。这些方法中,某些方法(比如前两个)是系统已经定义在类中的标准方法,可以直接拿来使用;而另外一些方法(比如main()方法)则需要由开发者编写方法体,被称为自定义方法。本节讲述如何来声明和定义一个自定义方法。

1.为什么使用方法

先看看下面这个例子,你会发现什么?

例3.2:求某个班的某门成绩的最高分、最低分、平均分。

可能你觉得这个例子没什么地方不合理,是呀,功能有了,成绩也计算出来了,好像是没什么不对的。但是从设计方面考虑就不行了。看看这个Java 程序文件的main()方法做了什么?

在此例的main()方法中,一个for 循环就包含了计算最高分、最低分和总分三个功能,并且整个程序要实现的功能都写在了main()方法里。

在这个源程序中,main()方法中实现了所有功能,并且某些功能混合在一起。试想:假如上例中的main()方法包含100、1 000 个甚至上万个功能,那代码还会有例3.2 那么易读吗?假如程序在运行过程中出现了问题,当程序员来整理这些代码时会很麻烦。人们在求解一个复杂问题时,通常采用的是逐步分解、分而治之的方法,也就是把一个大问题分解成若干个比较容易求解的小问题,然后分别求解。程序员在设计一个复杂的应用程序时,往往也是把整个程序划分为若干功能较为单一的程序模块,然后分别予以实现,最后再把所有的程序模块像搭积木一样装配起来,这种在程序设计中分而治之的策略,被称为模块化程序设计方法。

在Java 语言中,方法是程序的基本组成单位,因此可以很方便地用方法作为程序模块来实现Java 语言程序。

利用方法不仅可以实现程序的模块化,程序设计得简单和直观,提高了程序的易读性和可维护性,而且还可以把程序中普遍用到的一些计算或操作编成通用的函数,以供随时调用,这样可以大大地减轻程序员的代码工作量。

2.什么是方法

方法是一个独立的子程序,由相关代码组成,能完成一定的功能,能重复多次使用。

3.方法的分类

在Java 语言中可从不同的角度对方法分类。

(1)从方法定义的角度分类

从方法定义的角度,方法可分为系统定义和用户定义方法两种。

➢ 系统定义方法(API 提供的)

由Java 系统提供,无须用户定义,只需在程序前导入它所在类的包即可,如前面用的next()方法。

➢ 用户定义方法

由用户按需要编写的方法。

(2)从有无返回值的角度分类

从有无返回值的角度分类,又可把方法分为有返回值和无返回值两种。

➢ 有返回值方法

此类方法被调用执行完后将向调用者返回一个执行结果,称为方法返回值。

➢ 无返回值方法

此类方法用于完成某项特定的处理任务,执行完成后不向调用者返回方法值。由于方法无须返回值,用户在定义此类方法时可指定它的返回为“空类型”,空类型的说明符为“void”。

(3)从方法之间数据传送的角度分类

从方法之间数据传送的角度分类,又可分为无参方法和有参方法两种。

➢ 无参方法

方法定义、方法说明及方法调用中均不带参数。此类方法通常用来完成一组指定的功能,可以返回或不返回方法值。

➢ 有参方法

在方法定义及方法说明时都有参数,称为形式参数(简称为形参)。在方法调用时也必须给出参数,称为实际参数(简称为实参)。进行方法调用时,主调方法将把实参的值传送给形参,供被调方法使用。

4.方法的三大特征

(1)方法名

方法名代表方法的入口地址,指出了方法的位置。

(2)方法返回值类型

方法的返回值是指调用方法时从方法中得到的值,指定了返回值的类型。(www.daowen.com)

(3)方法的参数类型和数目

指定了调用方法时要向方法传递的数据的类型和数目。

5.怎么定义一个方法

(1)无参方法的一般形式

无参方法的一般形式:

方法名的命名必须是合法的标识符,一般是用于说明方法功能的动词或动名词短语。返回类型可以是void 和所有数据类型。修饰符可以分为访问权限修饰符和方法修饰符,其中限定访问权限的修饰符包括public,protected,private 和默认。public 访问修饰符表示该方法可以被任何其他代码调用,而private 修饰的方法只能被同类中的其他方法调用。

方法的返回值类型也和成员变量的数据类型一样,可以是基本类型:int,char,double等,也可以是类类型。返回值类型可以是void,表示没有返回值。

例如,一个无参方法的定义:

这里,hello()方法是一个无参方法,当被其他方法或者对象调用时,输出“Hello OEAC”字符串。

(2)有参方法的一般形式

有参方法的一般形式:

如果需要传入参数,则参数的定义包括参数类型和参数名(每个参数由一个类型和一个标识符组成)。如果需要一个以上的参数,则将不同的参数之间用逗号“,”隔开形成参数列表,参数列表中的参数名不能相同。

例如,定义一个方法,用于求两个数中较大的数,如下:

第一行说明max()方法是一个有参方法,其返回的方法值是一个整数。形参为“int a,int b”。a 和b 的具体值是由调用方法时传送过来的。在max()方法体中的return语句是把a(或b)的值作为方法的值返回给方法。有返回值的方法中至少应有一个return 语句。

例3.3:求两个整数的最大值方法。

6.怎么调用方法

方法调用的一般形式:

如果要接收返回值,可以这样调用:

7.参数的类型

参数的类型有形式参数和实际参数。

(1)形式参数

形式参数简称形参。形参出现在方法定义中,在整个方法体内都可以使用,离开该方法则不能使用。比如例3.3 中int max(int a, int b)中的a 和b 就是形式参数。

(2)实际参数

实际参数简称实参。实参可以是常量、变量或者表达式。在方法调用时,实参出现在主调方法中,进入被调方法后,实参变量也不能使用。比如例3.3 中的int max=d.max(12,10);此处的实参是12 和10。形参和实参的功能是进行数据传送。发生方法调用时,主调方法把实参的值传送给被调方法的形参从而实现主调方法向被调方法的数据传送。

方法的形参和实参的特点:

➢ 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在方法内部有效。方法调用结束返回主调方法后则不能再使用该形参变量。

➢ 实参可以是常量、变量、表达式、方法等,无论实参是何种类型的量,在进行方法调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值、输入等办法使实参获得确定值。

➢ 实参和形参在数量上、类型上、顺序上应严格一致,否则会发生“类型不匹配”的错误。

8.方法的返回值

方法的返回值是指方法被调用之后,执行方法体中的程序段所取得的并返回给主调方法的值。例如,例3.3 的max()方法取得的较大的数等。对方法的值(或称方法的返回值)有以下一些说明:

方法的值只能通过return 语句返回主调方法数。return 语句的一般形式为:

或者:

return 语句的功能:

➢ 计算表达式的值,并返回给主调方法。

➢ 跳出方法。在方法中尽管允许有多个return 语句,但每次调用只会有一个return语句被执行,因此只能返回一个方法值。

➢ 方法的返回值的类型和方法定义中方法的类型应保持一致。如果两者不一致,则出现错误。

➢ 无返回值的方法,可以明确定义为“空类型”,类型说明符为“void”。可定义为:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈