java类中如何调用方法调用
调用实例方法
实例方法属于类的对象,需先创建类的实例才能调用。语法为:对象名.方法名(参数列表)。
示例代码:
public class MyClass {
public void instanceMethod() {
System.out.println("实例方法被调用");
}
}
// 调用步骤
MyClass obj = new MyClass(); // 创建对象
obj.instanceMethod(); // 调用实例方法
调用静态方法
静态方法属于类本身,无需创建实例,通过类名直接调用。语法为:类名.方法名(参数列表)。
示例代码:
public class MyClass {
public static void staticMethod() {
System.out.println("静态方法被调用");
}
}
// 直接通过类名调用
MyClass.staticMethod();
方法调用中的参数传递
方法可以接受参数,调用时需传递匹配类型和数量的实参。支持基本类型(值传递)和对象类型(引用传递)。
示例代码:
public class Calculator {
public int add(int a, int b) { // 形参a和b
return a + b;
}
}
// 调用时传递实参
Calculator calc = new Calculator();
int result = calc.add(5, 3); // 输出8
方法链式调用
若方法返回对象本身(如this),可连续调用多个方法。常见于Builder模式或流式API。
示例代码:
public class StringBuilderExample {
private StringBuilder sb = new StringBuilder();
public StringBuilderExample append(String str) {
sb.append(str);
return this; // 返回当前对象
}
}
// 链式调用
StringBuilderExample example = new StringBuilderExample();
example.append("Hello").append(" World");
递归方法调用
方法内部调用自身,需设置终止条件以避免无限递归。
示例代码:
public class Recursion {
public int factorial(int n) {
if (n == 1) return 1; // 终止条件
return n * factorial(n - 1); // 递归调用
}
}
// 调用递归方法
Recursion rec = new Recursion();
int result = rec.factorial(5); // 输出120
通过反射调用方法
利用Java反射机制动态调用方法,适用于运行时确定方法名的情况。
示例代码:
import java.lang.reflect.Method;
public class ReflectionExample {
public void reflectMethod() throws Exception {
Class<?> clazz = MyClass.class;
Method method = clazz.getMethod("instanceMethod");
Object obj = clazz.newInstance();
method.invoke(obj); // 反射调用
}
}
方法重载与调用
同一类中允许同名方法存在,通过参数列表区分(参数类型、数量或顺序不同)。
示例代码:
public class OverloadDemo {
public void print(int num) {
System.out.println("整数: " + num);
}
public void print(String str) {
System.out.println("字符串: " + str);
}
}
// 根据参数类型自动匹配方法
OverloadDemo demo = new OverloadDemo();
demo.print(10); // 调用print(int)
demo.print("文本"); // 调用print(String)
跨类调用方法
通过对象引用或类名访问其他类中的方法,需注意访问权限(如public/private)。
示例代码:

public class ClassA {
public void methodA() {
System.out.println("ClassA的方法");
}
}
public class ClassB {
public void callMethodA() {
ClassA a = new ClassA();
a.methodA(); // 调用ClassA的方法
}
}






