以下是一个典型的定义一个方法的示例:
public double calculateAnswer(double wingSpan, int numberOfEngines, double length, double grossTons) { //do the calculation here }方法声明的唯一必需元素是方法的返回类型,名称,一对括号()和大括号{}之间的正文。 更一般地说,方法声明有六个组件,按顺序:
修饰语 - 比如公共,私有和其他你以后会学到的。返回类型 - 方法返回的值的数据类型,如果方法不返回值,则返回void。方法名称 - 字段名称的规则也适用于方法名称,但约定有所不同。比如,方法,更倾向于使用动词作为开头的单词。括号中的参数列表(以逗号分隔的输入参数列表),前面是其数据类型,由括号()括起来。如果没有参数,则必须使用空括号。一个例外列表 - 稍后讨论。方法体,括在大括号之间 - 方法的代码,包括局部变量的声明,都在这里。 注意: 定义:方法声明的两个组件包括方法签名——(方法的名称和参数类型)上述方法的签名是:
calculateAnswer(double, int, double, double)虽然方法名称可以是任何合法的标识符,但代码约定限制方法名称。按照惯例,方法名称应该是小写的动词或以小写开头的多字词名称,后跟形容词,名词等。在多字名称中,第二个和后面的每一个单词的第一个字母应该大写。这里有些例子:
run runFast getBackground getFinalData compareTo setX isEmpty通常,方法在其类中具有唯一的名称。但是,由于方法重载,方法可能与其他方法具有相同的名称。
Java编程语言支持重载方法,Java可以区分不同方法签名的方法。这意味着如果一个类中的方法具有不同的参数列表,那么类中的方法可以具有相同的名称(有一些资格将在题为“接口和继承”的课程中讨论)。
假设你有一个类可以使用书法绘制各种类型的数据(字符串,整数等等),并且包含绘制每个数据类型的方法。为每个方法使用一个新的名称是麻烦的,例如drawString,drawInteger,drawFloat等等。在Java编程语言中,您可以对所有绘图方法使用相同的名称,但会向每个方法传递不同的参数列表。因此,数据绘图类可能会声明四个名为draw的方法,每个方法具有不同的参数列表。
public class DataArtist { ... public void draw(String s) { ... } public void draw(int i) { ... } public void draw(double f) { ... } public void draw(int i, double f) { ... } }重载方法的区别在于传递给方法的参数的数量和类型。在代码示例中,draw(String s)和draw(int i)是不同的和唯一的方法,因为它们需要不同的参数类型。
您不能声明具有相同名称和相同数量和类型的参数的多个方法,因为编译器无法将它们分开。
当区分方法时,编译器不会考虑返回类型,因此即使有不同的返回类型,也不能声明具有相同签名的两个方法。
注意:重载的方法应该谨慎使用,因为它们可以使代码的可读性降低