计算机二级JAVA实例讲解(10月21日)

方法的重载

Java允许你在一个类中用同一个名字定义几个方法,只要每个方法有一套惟一的参数就可以。这被称作方法重载(method overloading)

方法的名字与所属类型以及参数的顺序构成了方法的签名(signature),在类中每个方法的签名必须是不完全一样的,这样才能使编译器准确地判断在一个特定位置上你调用的是哪个方法。

注意,方法返回值的类型对于方法的签名没有任何作用。你不能通过两个方法的返回值的类型来区分它们。这是因为当你调用一个方法时,返回值的类型是不显示的。例如,假定你编写了这样一条语句;

math.round(value);

由子上面这条语句丢弃了round()方法产生的值,所以它并没有什么意义,但是它说明了为什么返回值类型不能作为方法签名的一部分。对于编译器来说,从这条语句中没有办法知道方法round返回的是什么类型。因此,如果有几个不同版本的方法round(),并且返回值类型是它们特征的惟一区别,那么编译器就无法确定你使用的是哪个版本的round().

有很多情况下,使用方法重载是十分便利的。你己经看到过,标准类Math中包含两个版本的方法round(),一个接受float类型的自变量,另一个则接受double类型的自变量。现在你可以知道,方法重载使这种定义成为可能。在两个操作基本相同时,若要求必须对每个round()版本使用不同的名字,将是相当令人烦厌的。使用重载的最多场合是为一个类编写多个构造函数。现在就让我们来介绍这种情况。

多重构造函数

构造函数如同类中的其他方法一样,也可以进行重载。在大多数情形下,需要用不同的初始数据集构造一个类的若干个对象。如果我们考虑一下Sphere二类,为它设想一种需求,用各种方式定义sphere对象。你可能希望一个构造函数只接受一个点的坐标值(x,y, z),并且用默认的半径值1.0.构造一个Sphere对象。另一种是你可能希望建立一个默认的Sphere,半径为1.0,位于原点,所以,根本不需要指定自变量。