오버로딩

김민성·2022년 7월 14일
0

Java

목록 보기
12/47
post-thumbnail

오버로딩

  • 오버로딩이란 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것이다.

  • 메서드는 이름이 아닌 매개변수로 구분하기 때문에 매개변수의 개수 혹은 타입이 다르면 같은 이름의 메서드로 여러개 선언할 수 있다.

  • 오버로딩된 메서드를 사용할 시, 전달하는 값의 개수 혹은 타입으로 구분하여 알맞은 메서드가 자동으로 호출된다.

    public class Main {
    	public static void main(String[] args) {
    	MathTest mt = new MathTest();
    	
    	System.out.println(mt.add(3, 5));		// 8
    	System.out.println(mt.add(2.5, 5.3));	// 7.8
    	}
    }
    
    class MathTest{
    	int add(int a, int b) {
    		return a+b;
    	}
    	
    	double add(double a, double b) {
    		return a+b;
    	}
    }

    위의 코드를 보자. 먼저 MathTest 클래스 내부에 두 add 메서드가 오버로딩되어 정의되어있다. 다만 첫 번째 add 메서드는 매개변수로 int타입의 변수 두개를 받고, 두 번째 add 메서드는 double 타입으 변수 두개를 받는다.

    main 메서드에서는 먼저 add 메서드를 사용하기 위해 MathTest 타입의 객체 mt를 생성해준다. 그 후 매개변수로 3,5를 넘겨준 add 메서드와 2.5, 5.3을 넘겨준 add 메서드를 호출한다. 이 경우에 각각 알맞은 타입의 매개변수를 가진 메서드를 찾아가서 연산되는 것이다.

    이렇게 오버로딩을 다양한 자료형으로 해주면 사용자 입장에서 타입이 달라도 같은 이름을 사용하면 되니 편리하다. 대표적인 오버로딩된 메서드가 println 메서드로, 정의해놓은 것을 보면 println이라는 하나의 이름으로 여러 타입을 매개변수로 받는 것을 볼 수 있다. 따라서 println 사용자인 우리의 입장에서 매개변수의 타입과 상관없이 괄호안에 값을 넣기만 하면 되기 때문에 매우 편리하다.

0개의 댓글