跳转到主要内容
模块 2 · 第 2 课(共 2)课程中的4/14~12 min
模块课程(2/2)

方法和重载

方法定义对象的行为。我们可以将它们视为在类内部声明的函数,这些函数对对象的实例字段或传入参数进行操作。

定义方法

Java 中的方法由以下部分组成:

  1. 访问修饰符(例如,public、private)。
  2. 返回类型(例如,int、String 或 void(如果不返回任何内容)。
  3. camelCase 中的方法名称。
  4. 参数 括在括号内。
  5. 方法体 用大括号括起来。
Java
class Person {
    String name;

    public Person(String name) {
        this.name = name;
    }

    // Method with return type String
    public String greet() {
        return "Ciao, mi chiamo " + name;
    }
}

调用方法

要在创建的对象上调用方法,我们使用点符号 .:

Java
public class Main {
    public static void main(String[] args) {
        Person p = new Person("Marco");
        String message = p.greet(); // Calling the method
        System.out.println(message);
    }
}

方法重载

在Java中,同一类中的两个或多个方法可以具有相同的名称,只要它们具有不同的参数列表(参数的数量、顺序或类型)。这个概念称为重载。

编译器通过分析调用期间传递的参数来决定调用哪个方法。

Java
class Printer {
    // Method to print an integer
    public void printValue(int number) {
        System.out.println("Intero: " + number);
    }

    // Overloaded method to print a string
    public void printValue(String text) {
        System.out.println("Testo: " + text);
    }
}

按值传递参数

在Java中,所有参数都是按值(pass-by-value)传递。这意味着当您将参数传递给方法时,Java 会创建变量值的副本并将其传递给方法。

  • 对于原始类型,方法外部的原始值永远不会改变,即使在方法内部进行了修改。
  • 对于对象/引用,复制对对象的引用。这意味着,虽然我们无法更改原始对象指向的内存地址,但我们可以修改其内部状态(例如,其字段),并且这些更改将在外部可见。

重载限制:返回类型

需要注意的是,您不能仅根据返回类型来重载方法。例如,以下代码将导致编译错误:

Java
class Example {
    // ERROR: The signature of the two methods is considered identical
    public int getNumber() { return 42; }
    public double getNumber() { return 42.0; }
}

编译器只需要根据参数来区分方法,以决定在编译时调用哪个版本(重载在编译时解决)。


自己尝试一下

锻炼#java.m2.l2.e1
尝试:0加载中...

将 public int add(int a, int b) 方法添加到 Calculator 类,该方法返回两个数字的总和。在 main 方法中,对 calc 对象调用此方法并将结果分配给整数变量。

正在加载编辑器...
显示提示

将该方法声明为 `public int add(int a, int b) { return a + b; }` 并在 main 方法中调用它作为 `int result = calc.add(5, 10);`。

3 次尝试后可用的解决方案

锻炼#java.m2.l2.e2
尝试:0加载中...

通过创建另一个接受两个双精度参数并返回它们之和的方法来重载 Calculator 类中的 add 方法。

正在加载编辑器...
显示提示

写成 `public double add(double a, double b) { return a + b; }` 直接位于第一个 add 方法下方。

3 次尝试后可用的解决方案

锻炼#java.m2.l2.e3
尝试:0加载中...

向 Calculator 类添加一个 public int multiply(int a, int b) 方法,该方法返回两个数字的乘积。在 main 方法中,对 calc 对象调用此方法并将结果分配给整数变量。

正在加载编辑器...
显示提示

将该方法声明为 `public int multiply(int a, int b) { return a * b; }` 并在 main 方法中调用它作为 `int result = calc.multiply(5, 10);`。

3 次尝试后可用的解决方案