메서드 오버로딩
//본래는 이름이 중복된 메서드는 존재가 불가능하다! (변수와 마찬가지로!)
//C언어 : 중복 절대 안됨!!
//C++에서는 중복을 허용할 수 있는 방법이 시작됨


public class Exam_03 {
	//메서드의 이름이 같아도, 매개변수의 종류 또는 개수가 다르면
	//다른 메서드로 인식한다.
	
	public static void func() {
		System.out.println("A");
	}
	public static void func(int num) {
		System.out.println("B");
	}
	public static void func(double d) {
		System.out.println("C");
	}
	public static void func(int num1, int num2) {
		System.out.println("D");
	}
	
	public static void main(String[] args) {
		func();
		func(100);
		//이름이 같아도 구분이 안됨...
		//이름이 같아도 구분이 되는게 생긴다면, 중복을 oK해주겠다.
		//매개변수의 유무에 따라도 분류가 되고
		//매개변수종류의 차이에 따라서도 분류가 된다.
		func(100.0);
		func(3,9);
		
		
		//이것을 자바의 메서드 오버로딩(Method Overroading) 이라고 한다.
		//오버로딩 (직역:과하게 적재하다, 의미 :이름 하나가 너무 많은 기능을 가지고 있다.)
		//오버로딩을 가능하게 하는 것은 매개변수 때문 (return값은 기준이 되지 못함)
		
		System.out.println();
		//println의 매개변수를 추측할 수 없다. 
		//int를 넣어도, String을 넣어도, double을 넣어도 출력이 되니까..
		//println이 메서드 오버로딩으로 만들어진 메서드임을 알 수 있음.
		
		System.out.println();
		
		
		
		
		
		
		
	}
}