2022.11.15 JAVA 14일차 오버로딩

2022. 11. 22. 08:50JAVA

오버로딩(overloading)

한 클래스 내에 같은 이름의 메소드를 여러개 정의
-메서드 이름이 같아야 함
-매개변수의 개수 또는 타입이 다르게 구현
반환타입은 오버로딩을 구현하는데 아무런 영향을 주지 못함

예 : System.out.println 메서드
매개변수로 지정하는 값의 타입에 따라 호출되는 pintln메서드가 다름

void println()
void println(boolean x)
void println(char x)
void println(char[] x)
void println(double x)
void println(String x)
.
.
.

 

예제1)

class MyMath2
{
	int add(int a, int b)
	{
		System.out.println("1");
		return a+b;
	}
	
	int add(int a, double b)
	{
		System.out.println("2");
		return a+(int)b;
	}
	
	int add (double a , int b)
	{
		System.out.println("3");
		return (int)a + b;
	}
	
	double add (double a, double b)
	{
		System.out.println("4");
		return a+b;
	}
	
	int add(int[] a)
	{
		int i,sum =0;
		System.out.println("5");
		for(i = 0; i < a.length; i++)
		{
			sum += a[i];
		}
		return sum;
	}
}

public class MySample1115_5 {

	public static void main(String[] args) {
		/*
		 * 메서드 오버로딩 
		 * 출력예)
		 * 1
		 * 13		(5,8)
		 * 2	
		 * 12		(5,7.1)
		 * 3
		 * 12		(7.1,5)
		 * 4
		 * 12.3	(7.1,5.2)
		 * 5
		 * 210
		 */
		MyMath2 ma = new MyMath2();
		
		int a[] = new int[] {10,20,30,40,50,60};
		
		System.out.println( "main " +ma.add(5,8));
		System.out.println("main : " +ma.add(5,7.1));
		System.out.println("main : " +ma.add(7.1,5));
		System.out.println("main : " +ma.add(7.1,5.2));
		System.out.println("main : " +ma.add(a));
		
	}

}

 

출력

 

예제2)

class Computer
{
	void show(int a)
	{
		System.out.println("컴퓨터 가격은 : " + a + " 원 입니다.");
	}
	void show(String a)
	{
		System.out.println("제품은 : " + a + " 입니다.");
	}
	void show(int a , String b)
	{
		System.out.println("구매한 제품은 : " + b + " 이며, " + a + " 원 입니다.");
	}
}

public class MySample1115_6 {

	public static void main(String[] args) {
			/*
			 * 매서드 오버로딩
			 * 
			 * 메서드명 show
			 * 실행결과)
			 * 컴퓨터 가격은 : 10000원 입니다.
			 * 
			 * 제품은 : 컴퓨터 입니다.
			 * 
			 * 구매한 제품은 : 컴퓨터 이며, 10000원 입니다.
			 */
		Computer com = new Computer();
		int money = 10000;
		String item = "컴퓨터";
		
		com.show(money);
		com.show(item);
		com.show(money, item);
		
	}

}

출력