○ 메소드 오버로딩의 개요


   메소드 오버로딩(Overloading)이란 메소드가 처리하는 기능은 같고 메소드 괄호 속에 오는 인수(인자, 매개변수, 파라미터)의 갯수가 다르거나 자료형(Data Type)이 다른 경우 메소드의 이름을 동일한 이름으로 부여하여 메소드를 정의할 수 있도록 문법적으로 허용하게 되는데 이를 메소드 오버로딩(Method Overloading) 이라고 한다.

 

 

다음과 같이 같은 이름의 메소드를 3개 정의할 수 있다.

 


	// 선을 그리스 메소드 정의
	public static void drawLine()
	{
		System.out.println("====================");
	}
	
	// 선의 형태를 바꾸어 그리는 메소드 정의
	public static void drawLine(char c)
	{
		for (int i =0; i < 20; i++)
		{
			System.out.print(c);
		}
		System.out.println();
	}

	// 선의 형태와 길이를 바꾸어 그리는 메소드 정의ㅡ
	public static void drawLine(char c, int n)
	{
		for (int i = 0; i< n; i++)
		{
			System.out.print(c);
		}
		System.out.println();
	}

 

같은이름의 메소드들 중 인자의 갯수나 자료형이 일치되는 메소드를 호출하여 사용할 수 있다.  

 

public class Test106
{
	public static void main(String[] args)
	{
		drawLine();
		//--==>> ====================
		
		drawLine('+');
		//--==>> ++++++++++++++++++++
		
		drawLine('>');
		//--==>> >>>>>>>>>>>>>>>>>>>>

		drawLine('/', 50);
		//--==>> //////////////////////////////////////////////////
		
		drawLine('+', 30);
		//--==>> ++++++++++++++++++++++++++++++
		
	}
}    

※ 메소드 오버로딩이 가능한 형태 & 불가능한 형태

public class Test107
{
	public static void main(String[] args)
	{
		print('A');	

		double result = print(10, 0);
		print(10.0);
	}

	public static void print(){}
	public static void print(int i){}
	//public static void print(int j){}				//-- (Ⅹ)
	public static void print(char c){}				//-- 자동 형 변환 규칙 check~!!!
	public static void print(int i, int j){}
	//public static void print(double d){}				//-- 자동 형 변환 규칙 check~!!!
	//public static double print(double d){return 3.14;}		//-- (Ⅹ)
	//public static void print(double e){return 3.14;}		//-- 정의 불가


}

+ Recent posts