Java类成员方法的定义和调用(非常详细)
使用 Java 编程时,我们通常会将某个任务的执行步骤抽象成一个方法,这个方法包含了执行这个任务的所有指令,至于由哪些指令来组成哪些方法则需要我们自己根据实际项目的需求来决定。
定义方法的最大好处是提升代码的复用性和可读性。在复用性方面,我们编写的方法可以被多次使用,从而避免重复编写相同的代码。在可读性方面,将若干指令定义成一个方法,可以从方法层面去理解代码,从而提高代码的可读性。
成员方法是指在 Java 类中除构造方法和主方法外的方法,比如下面是一个成员方法的伪代码,在 Rectangle 类中定义一个名为 calcArea() 的成员方法,该方法包含了若干语句:

图 1 成员方法的构成
这些要素中有些是必需的,有些则可以根据实际情况省略。下面对这 6 个要素分别进行介绍。
1) 访问修饰符用于声明方法的访问类型,访问类型决定了方法的可见性。Java 提供了以下 4 种不同的访问修饰符:
2) 非访问修饰符,用于表示方法的特性,对于一个方法来说非访问修饰符并非必需的,包括以下三种:
3) 返回类型,表示方法返回的数据类型,可以是 Java 合法的任意数据类型,如果无须返回数据则使用 void 关键字。
4) 方法名,它是方法的标识符,建议它的命名是有意义的。同时它与参数列表的组合必须保证是唯一的,比如“test()”和“test(int i)”是允许同时存在的,因为虽然它们的方法名相同,但是与参数列表的组合不相同。
5) 参数列表,表示调用该方法时需要传入的所有参数,这些参数由逗号分隔并由一对括号括起来,每个参数定义都包含了数据类型和变量名。如果某个方法无须传入任何参数,那么只剩一对括号即可。
6) 方法体,方法体里是方法的所有执行指令,它通过大括号将这些执行指令包围起来。
根据上面的定义我们重新看上一个示例,如下图所示:

图 2 方法的定义
该方法定义了一个加法操作,其中 public 访问修饰符声明该方法可以供所有类访问,static 修饰符表示它是一个静态方法,int 说明该方法返回值的类型为整型,addition 是该方法的名称,(int a, int b) 说明该方法需要传入两个参数,大括号及其包含的所有语句为该方法的方法体。以上便完成了一个方法的定义。
注意,调用方法时要确保传入的参数值与方法中定义的参数列表的顺序一致。
定义方法的最大好处是提升代码的复用性和可读性。在复用性方面,我们编写的方法可以被多次使用,从而避免重复编写相同的代码。在可读性方面,将若干指令定义成一个方法,可以从方法层面去理解代码,从而提高代码的可读性。
成员方法是指在 Java 类中除构造方法和主方法外的方法,比如下面是一个成员方法的伪代码,在 Rectangle 类中定义一个名为 calcArea() 的成员方法,该方法包含了若干语句:
class Rectangle { ... int calcArea() { 语句1; 语句2; 语句3; ... } ... }
Java成员方法的构成
Java 中的一个成员方法由六要素组成:访问修饰符、非访问修饰符、返回类型、方法名、参数列表以及方法体,如下图所示。
图 1 成员方法的构成
这些要素中有些是必需的,有些则可以根据实际情况省略。下面对这 6 个要素分别进行介绍。
1) 访问修饰符用于声明方法的访问类型,访问类型决定了方法的可见性。Java 提供了以下 4 种不同的访问修饰符:
- public:表示公有的,它声明的方法可以被所有类访问。
- protected:表示受保护的,它声明的方法可以被相同包下的其他类访问,或者不同包的子类访问。
- private:表示私有的,它声明的方法只能在当前类内部被访问。
- 默认情况:当我们不使用任何访问修饰符来声明方法时即默认情况,默认情况下的方法只能被相同包下的类访问。
2) 非访问修饰符,用于表示方法的特性,对于一个方法来说非访问修饰符并非必需的,包括以下三种:
- static:表示静态的,一个静态的方法可以通过类直接访问而无须创建对象。
- final:表示该方法为最终形态,一个具有最终形态的方法不能被子类重写。
- synchronized:表示该方法是同步的,该方法同时只能由一个线程进行访问。
3) 返回类型,表示方法返回的数据类型,可以是 Java 合法的任意数据类型,如果无须返回数据则使用 void 关键字。
4) 方法名,它是方法的标识符,建议它的命名是有意义的。同时它与参数列表的组合必须保证是唯一的,比如“test()”和“test(int i)”是允许同时存在的,因为虽然它们的方法名相同,但是与参数列表的组合不相同。
5) 参数列表,表示调用该方法时需要传入的所有参数,这些参数由逗号分隔并由一对括号括起来,每个参数定义都包含了数据类型和变量名。如果某个方法无须传入任何参数,那么只剩一对括号即可。
6) 方法体,方法体里是方法的所有执行指令,它通过大括号将这些执行指令包围起来。
Java成员方法的定义
定义一个方法的语法如下:访问修饰符 非访问修饰符 返回类型 方法名(参数列表) { 方法体 }
- 首先根据情况设定访问修饰符和非访问修饰符,注意它们都并非必需的;
-
其次设定返回类型、方法名以及参数列表,它们都是必需的,注意参数列表整体包含了括号,如果没有需要传入的参数则直接使用
()
即可; - 最后是方法体,方法体包括了一对大括号,并在大括号内部编写该方法的所有指令。
根据上面的定义我们重新看上一个示例,如下图所示:

图 2 方法的定义
该方法定义了一个加法操作,其中 public 访问修饰符声明该方法可以供所有类访问,static 修饰符表示它是一个静态方法,int 说明该方法返回值的类型为整型,addition 是该方法的名称,(int a, int b) 说明该方法需要传入两个参数,大括号及其包含的所有语句为该方法的方法体。以上便完成了一个方法的定义。
Java成员方法的调用
当我们定义好一个方法后就可以使用它,通常我们用“调用方法”来表述方法的使用。对于某个对象或类,可以通过圆点符号(.)来调用它的方法。调用时需要根据方法定义的参数列表传入所有参数,如果没有定义参数则为一对括号。对象.方法名(参数列表); 对象.方法名(); 类.方法名(参数列表); 类.方法名();下面是方法调用的示例:
public class Calculator { public static int addition(int a, int b) { int sum; sum = a + b; return sum; } public int subtraction(int a, int b) { return a - b; } public static void main(String[] args) { System.out.println(Calculator.addition(10, 5)); Calculator calculator = new Calculator(); System.out.println(calculator.subtraction(20, 10)); } }我们定义了一个 Calculator 类,该类包含了 addition() 和 subtraction() 两个方法:
- addition() 方法使用了 static 进行修饰,所以可以通过类直接调用,即 Calculator.addition(10, 5),其中 10 和 5 对应 addition() 方法的参数列表,传入这两个参数值后会执行该方法并返回二者之和,最终输出 15;
- 对于 subtraction() 方法,由于它没有使用 static 修饰,因此需要先创建 Calculator 的对象,再通过所创建的对象去调用该方法,最终输出 10。
注意,调用方法时要确保传入的参数值与方法中定义的参数列表的顺序一致。