본문 바로가기

PL(ProgrammingLanguage)/JAVA

메소드 오버로딩

 

매개변수의 개수나 타입이 조금씩 다르지만, 비슷한 기능을 하는 메소드가 여러 개 있을 수 있다.
이런 메소드가 각각 다른 이름으로 정의되어 있다면,

 

어떨 때 어떤 메소드를 사용해야 할지 구분하기 어려울 수 있다.
이러한 경우를 위해서

" 매개변수의 수가 다르거나, 매개변수의 타입이 다르다면" 동일한 이름으로 메서드를 여러 개 정의할 수 있다.

 

이를 메소드 오버로딩이라 한다.

 

 


 

메소드 오버로딩

 

매개변수의 유형과 개수가 다르게 하여 같은 이름의 메서드를 여러 개 가질 수 있다.
여기서 중요한 것은 타입과 매개변수의 수가 중요하다.
타입은 같았지만 매개변수가 달라졌기 때문에 가능했다.
매개변수의 수는 같지만 타입이 다르기 때문에 가능하다.

 


 

MyClass2.java 

 

1. 정수를 2개를 받아들여서 그 정수값을 더해서 리턴하는 메소드

public int plus(int a, int b) {
	return a + b;
}



2. 정수 값 3개를 받아들여서 그 정수값 3개 모두 더해서 리턴하는 메소드

public int plus(int a, int b, int c) {
 	return a + b + c;
}



3. 문자열 2개를 받아들여서 그 문자열을 결합해서 리턴하는 메소드

public String plus(String a, String b) {
	return a + b;
}

 

예시) 오류 발생 - 여기서 포인트 ! 매개변수의 이름은 중요하지 않고 타입이 중요하다.
위처럼 변수명은 다르지만, 매개변수의 타입과 개수가 동일한 메소드를 또 정의할 수 없기 때문이다.


public int plus(int x, int y){
	return x+y;
}

 

 


MethodOverloadExam.java

 

package Java02;

public class MethodOverloadExam {
    // 오버로딩된 메소드 이용하기

    public static void main(String[] args) {


        // 해당 클래스가 만들어져 있어야하고
        // 클래스타입 변수명 = new 클래스가 가지고 있는 생성자이름();
        MyClass2 m = new MyClass2();

        // 1. 정수형 매개변수 2개를 더하여 리턴하는 메서드
        System.out.println(m.plus(5, 5)); // 매개변수.갖고있는 메서드

        // 2. 정수형 매개변수 3개를 더하여 리턴하는 메서드
        System.out.println(m.plus(5, 6, 7));

        // 3. 문자열 결합하여 리턴하는 메서드
        System.out.println(m.plus("a", "b"));
    }
    
}