方法的定义
定义一个方法
以下是一个典型的方法声明示例:
public double calculateAnswer(double wingSpan, int numberOfEngines,
double length, double grossTons) {
// do the calculation here
}
方法声明的必备要素仅包括方法的返回类型、名称、一对圆括号() 以及用大括号 {} 括起的代码主体。
更普遍地说,方法声明包含6个组成部分,按照顺序如下:
- 修饰符——例如 public 、private 以及你将在后续学习到的其他修饰符。
- 返回类型——方法返回值的数据类型,若方法不返回值则为 void。
- 方法名称——字段名称的命名规则同样适用于方法名称,但约定稍有不同。
- 括号中的参数列表——以逗号分隔的输入参数列表,参数前标注其数据类型,并用括号()括起。若无参数,则必须使用空括号。
- Exception列表——将在后文讨论。
- 方法主体,用大括号括起来——方法的代码,包括局部变量的声明,都放在这里。
修饰符、返回类型和参数将在本节后文讨论。异常将在后续章节中讨论。定义:方法声明的两个组成部分构成了方法签名——方法名称和参数类型。
上述声明的方法的签名是:
calculateAnswer(double, int, double, double)
命名一个方法
尽管方法名称可以是任何合法标识符,但编码规范对方法名称有所限制。按惯例,方法名称应采用小写动词形式,或由多个单词组成且以小写动词开头,随后接形容词、名词等。在多词名称中,第二个及后续单词的首字母均应大写。以下是一些示例:
run
runFast
getBackground
getFinalData
compareTo
setX
isEmpty
通常,方法在其所属类中具有唯一名称。然而,由于方法重载,某个方法可能与其他方法具有相同名称。
方法重载
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) 是不同的独立方法,因为它们需要不同的参数类型。
你不能声明多个具有相同名称且参数数量和类型相同的方法,因为编译器无法区分它们。
编译器在区分方法时不会考虑返回类型,因此即使两个方法的返回类型不同,你也无法声明具有相同签名的方法。
注意:应谨慎使用重载方法,因为它们会大幅降低代码的可读性。