Java的方法重载

超载是指

在同一类中,使用不同的参数类型和数量来定义多个同名方法被称为重载。由于只是使用同名,所以方法的内容(处理)可以是不同的。重载的好处是:
– 由于这是用于设置相同数据的方法,所以通过使用相同的名称,程序变得更易于理解。
– 可以给予相同的名称,因此命名变得更加容易。
– 由于方法名称不变,所以在调用时更方便使用。
等等。

class Student{
  String name;
  int engScore;
  int mathScore;

  void setData(String n){
    name = n;
  }
  void setData(String n, int e, int m){
    name = n;
    engScore = e;
    mathScore = m;
  }
}

在上述的”Student”类中,定义了两个名为”setData”的方法(方法重载)。
其中一个”setData”方法接收一个String类型的参数,而另一个”setData”方法接收一个String类型的参数和两个int类型的参数。
在调用端,可以根据方法的名称、参数的类型和数量来决定调用哪个”setData”方法。

 public static void main(String[] args){
    Student stu = new Student();
    stu.setData("菅原");
    stu.setData("菅原", 75, 100);
                           :
  }
}

如果在调用者一侧找不到匹配名字和参数组合的选项,将会导致编译错误。
即使返回值类型不同,也可以调用。

请提供要重述的例文。

class StuSample2{
  public static void main(String[] args){
    Student2 stu1 = new Student2();
    Student2 stu2 = new Student2();

    stu1.setData("菅原");
    stu1.setScore(90, 80);
    stu1.display();

    stu2.setData("田仲", 75, 100);
    stu2.display();
  }
}
class Student2{
  String name;
  int engScore;
  int mathScore;

  void setData(String n){
    name = n;
  }
  void setData(String n, int e, int m){
    name = n;
    engScore = e;
    mathScore = m;
  }
  void setScore(int e, int m){
    engScore = e;
    mathScore = m;
  }
  void display(){
    System.out.println(name + "さん");
    System.out.println("英語" + engScore + "点・数学" + mathScore + "点");
  }
}
菅原さん
英語90点・数学80点
田仲さん
英語75点・数学100点

在Student2类中,有两个重载的setData方法。第一个setData方法位于第6行,接收一个String类型的参数,并将其赋值给变量。第二个setData方法位于第9行,接收一个String类型和两个int类型的参数,并将它们分别赋值给相应的变量。

StuSample2类中生成了两个对象,这两个对象都是从Student2类创建的。
在StuSample2类的第6到9行中,将值存储到Student2类的第6行的setData方法和setScore方法中,并通过display方法进行输出。
在StuSample2类的第10到11行中,将值”田仲”,75和100分别存储到Student2类的第9行的setData方法中,并通过display方法进行输出。

请参阅以下文章。