这是典型的方法声明示例:

  1. public double calculateAnswer(double wingSpan, int numberOfEngines,
  2. double length, double grossTons) {
  3. //do the calculation here
  4. }

方法声明中唯一需要的元素是方法的返回类型,名称,一对圆括号(),以及大括号{}之间的主体。
通常,方法声明按顺序包含六个部分:

  1. 修饰符,如publicprivate和其他你以后会了解到的。
  2. 返回类型-方法返回的值的数据类型,或者void方法未返回值。
  3. 方法名称-字段名称的规则也适用于方法名称,但是约定有所不同。
  4. 括号中的参数列表-用逗号分隔的输入参数列表,其后为数据类型,并用圆括号()括起来。如果没有参数,则必须使用空圆括号。
  5. 异常列表-稍后再讨论。
  6. 括号之间的方法主体(此处是方法的代码,包括局部变量的声明)位于此处。

修饰符,返回类型和参数将在本课程后面讨论。异常将在后面的课程中讨论。


定义: 方法声明的两个组成部分构成方法签名 -方法的名称和参数类型。


上面声明的方法的签名是:

  1. calculateAnswer(double, int, double, double)

命名方法

尽管方法名称可以是任何合法标识符,但是代码约定限制了方法名称。按照惯例,方法名称应为小写的动词或以小写的动词开头的多词名称,后跟形容词,名词等。在多词名称中,第二个单词及其后每个单词的第一个字母应该大写。这里有些例子:

  1. run
  2. runFast
  3. getBackground
  4. getFinalData
  5. compareTo
  6. setX
  7. isEmpty

通常,方法在其类中具有唯一的名称。但是,由于方法重载(method overloading,方法可能与其他方法同名。

重载方法

Java编程语言支持重载(overloading)方法,Java可以区分具有不同方法签名的方法。这意味着,如果类中的方法具有不同的参数列表,则它们可以具有相同的名称(对此有一些限定条件,将在标题为“接口与继承”的课程中进行讨论)。
假设您有一个类,可以使用书法来绘制各种类型的数据(字符串,整数等),并且包含一个用于绘制每种数据类型的方法。麻烦的是每个方法使用一个新的名称,例如,drawStringdrawIntegerdrawFloat,等。在Java编程语言中,您可以对所有绘图方法使用相同的名称,但可以将不同的参数列表传递给每个方法。因此,数据绘图类可能会声明四个名为draw的方法,每个方法都有一个不同的参数列表。

  1. public class DataArtist {
  2. ...
  3. public void draw(String s) {
  4. ...
  5. }
  6. public void draw(int i) {
  7. ...
  8. }
  9. public void draw(double f) {
  10. ...
  11. }
  12. public void draw(int i, double f) {
  13. ...
  14. }
  15. }

重载的方法通过传递给方法的参数的数量和类型来区分。在代码示例,draw(String s)draw(int i)是不同的方法,因为它们需要不同的参数类型。
您不能声明多个具有相同名称,相同数量和类型的参数的方法,因为编译器无法区分它们。
区分方法时,编译器不会考虑返回类型,因此即使两个方法具有不同的返回类型,也无法声明具有相同签名的两个方法。


注意: 应该谨慎使用重载的方法,因为它们会使代码的可读性大大降低。