// overloading : 메소드 중복정의
//	메소드 이름은 같지만 메소드 괄호안에 있는 매개변수의 개수가 다르거나 자료형이 다르면 다른메소드이다. 
public class Ex10_overloading {
	public static void main(String[] args) {
		Test10 ob = new Test10();
		
		ob.print();
		
		short a = 10;
		ob.print(a); // int: 10
					 // 동일한 기본자료형의 인수를 가진 메소드가 없으면 
		             // 기본자료형중에 가장 가까운 큰 자료형의 메소드 호출
		
		Short b = 10; 
		ob.print(b); // Short: 10
		
		int c=10;
		ob.print(c); // int: 10
		
		long d=10;
		ob.print(d); // Long: 10
			// 매개변수 인수가 기본자료형 중 같거나 큰 것이 없는 경우
			// Wrapper 클래스가 존재하면 Wrapper에서 찾는다. 
			// Wrapper 클래스도 없으면 컴파일 오류
			// 기본자료형이 우선순위가 높음. 
            // long 은 8byte 이므로 기본자료형의 인스턴스 메소드에서 기본자료형은 int(4byte)형
            // 밖에 없으므로 Wrapper 클래스 Long 으로 가서 출력!
		
	}
}
class Test10 {
	
	public void print() {
		System.out.println("인자가 없는 메소드");
	}
	
	
/*	// 컴파일 오류. 메소드 오버로딩이 아니다. 오버로딩은 매개변수의 개수가 다르거나 자료형이 달라야한다.
	public int print() {
		return 1;
	}
	매개변수의 타입이 다르거나, 매개변수의 개수가 달라야 한다. 
	자료형이 다르다고 메소드 이름을 다 다르게 주면 가독성이 떨어짐.
	System.out.println() 메소드의 중복정의의 예.
	데이터타입이 달라도 출력하는 것은 다 같음
	
	
	리턴타입으로 구분하는 것이 아님!
*/
	// Wrapper 클래스 : 기본 자료형에 대응하는 클래스로 Short, Integer, Long 등...
	// Short : Wrapper 클래스. 기본자료형인 short를 클래스로 작성한 것★★★
	public void print(Short a) {
		System.out.println("Short: "+a);
	}
	
	public void print(int a) {
		System.out.println("int: "+a);
	}
	// Long : Wrapper 클래스. 기본자료형인 long을 클래스로 작성한 것.
	public void print(Long a) {
		System.out.println("long: "+a);
	}
	public void print(int a, int b) {
		System.out.println("매개변수 2개: "+a+","+b);
	}
	
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0714_Ex12_객체 배열  (0) 2021.07.15
0714_Ex11_method : 비정형인자  (0) 2021.07.15
0714_Ex08_recursion  (1) 2021.07.14
0714_Ex07_recursion : 재귀호출  (0) 2021.07.14
0714_Ex06_객체는 레퍼런스 변수이다.  (0) 2021.07.14

+ Recent posts