Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
这是一个典型的方法声明的例子:
public double calculateAnswer(double wingSpan, int numberOfEngines, double length, double grossTons) { //do the calculation here }
方法声明的唯一必需元素是方法的返回类型,名称,一对括号 ()
, 以及在大括号 {}
之间的方法主体。
更一般地说,方法声明有六个组件,依次为:
public
,private
)以及稍后将会学到的其他修饰符。void
。()
。如果没有参数,则必须使用空括号。修饰符,返回类型和参数将在本课稍后部分讨论。例外情况在后面的课程中讨论。
上面声明的方法的签名是:
calculateAnswer(double, int, double, double)
虽然方法名称可以是任何合法的标识符,但代码规范会限制方法名称。按照规范,方法名应该是小写的动词或多个词的名称,多个词以小写的动词开头,后面跟形容词,名词等。在多词的名称中,第二个单词和后面的单词的首字母应该大写。这里有些例子:
run runFast getBackground getFinalData compareTo setX isEmpty
通常,方法在其类中具有唯一的名称。但是,由于 method overloading (方法重载),方法可能与其他方法具有相同的名称。
Java 编程语言支持 overloading (重载) 方法,Java 可以区分具有不同 method signatures (方法签名) 的方法。这意味着如果一个类中的方法具有不同的参数列表,那么类中的方法可以具有相同的名称(这有一些限制,将在标题为 "接口和继承" 的课程中讨论)。
假设你有一个可以使用书法绘制各种类型的数据(字符串,整数等)并包含绘制每种数据类型方法的类。使用每个方法的新名称很麻烦,例如 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)
是截然不同且唯一的方法,因为它们需要不同的参数类型。
你不能声明多个具有相同名称和相同数量和类型的参数的方法,因为编译器无法区分它们。
编译器在区分方法时不考虑返回类型,所以即使它们具有不同的返回类型,也不能声明具有相同签名的两个方法。