파게로그
method overloading in Java 본문
같은 기능을 하는 메소드가 다른 인자를 받을 수 있도록 한다. 아래의 코드에서는, print(int n)
만으로 print()
를 커버할 수 있지만, 한 번만 구현해두면 메서드의 사용자는 불필요한 인자 전달을 하지 않아도 된다. 다만 실제로는, 기본 메서드는 print()
이며 print(int n)
이 '추가 기능이 구현되었다'고 할 수 있는, 오버로드된 메서드이다.
구현할 때에는, 인자가 많은 메서드를 구현한 후 나머지는 그 메서드를 호출하는 방식을 이용한다.
package ex.method.overloading;
import java.util.Scanner;
class Student {
String name;
int age;
double score;
public Student(String name, int age, double score) {
this.name = name;
this.age = age;
this.score = score;
}
public String toString() {
return name+"/"+age+"세/"+score+"점";
}
}
class StudentList {
Student[] students;
int number;
public StudentList(Student[] students, int number) {
this.students = students;
this.number = number;
}
public void print() {
print(number);
}
/* method overloading */
public void print(int n) {
for (int i = 0; i < n; i++) {
System.out.println(students[i].toString());
}
}
public static StudentList create() {
Scanner sc = new Scanner(System.in);
System.out.print("몇 명의 학생이 있습니까? ");
int n = sc.nextInt();
Student[] students = new Student[n];
for (int i = 0; i < n; i++) {
String name = sc.next();
int age = sc.nextInt();
double score = sc.nextDouble();
students[i] = new Student(name, age, score);
}
StudentList studentList = new StudentList(students, n);
sc.close();
return studentList;
}
}
public class Example {
public static void main(String[] args) {
StudentList studentList = StudentList.create();
/* 출력 시작 */
System.out.println("studentList.print() 결과");
studentList.print();
System.out.println("studentList.print(1) 결과");
studentList.print(1);
/* 출력 끝 */
}
}
'콤퓨타 왕기초 > Java' 카테고리의 다른 글
Has A 관계와 Is A 관계 (0) | 2020.11.18 |
---|---|
생성자 (0) | 2020.11.18 |
다른 언어와 헷갈리는 문법을 모아보자 (0) | 2020.11.14 |
break문에서의 label (0) | 2020.11.12 |
입출력 (0) | 2020.11.08 |
Comments