파게로그

method overloading in Java 본문

콤퓨타 왕기초/Java

method overloading in Java

파게 2020. 11. 16. 14:57

같은 기능을 하는 메소드가 다른 인자를 받을 수 있도록 한다. 아래의 코드에서는, 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