/*

오버로딩(다중정의)

  1. 자바 다형성구현기법 중의하나이다.

  2. 정의: 같은메쏘드 이름으로 여러개를 정의하는방법

           - 규칙: 

               * 메쏘드의 이름이 같아야한다.

               * 메쏘드의 인자의 숫자가 다르거나

               * 메쏘드의 인자의 타입이 달라야한다.

               * 메쏘드의 리턴타입,접근지정자는 상관없다.


*/

//------ Printer.java ------

 

public class Printer {
	public void print (int a){
		System.out.println("int print: "+a);
	}
	public void print (char c){
		System.out.println("char print: "+c);
		
	}
	public void print (String str){
		System.out.println("String print: "+str);
		
	}
	public void print (boolean b){
		System.out.println("boolean print: "+b);
		
	}
	public void booleanprint (boolean b){
		System.out.println("boolean print2: "+b);
		
	}
	
	public static void main(String[] args) {
		Printer p = new Printer();
		
		p.print(false);
		p.booleanprint(true); //얘는 오버로딩 안하고 그냥 쓰는거.
		p.print("U");
		p.print(7);
		p.print("HAVE A GOOD TIME");
	
	}
}

 

//------ Overloading.java ------

 
public class Overloading {

	public void method (){
		System.out.println("public void method ()");
	}
	
	public void method (int a){
		System.out.println("public void method (int a)= "+a);
	}
	
	//인자의 타입
	public void method (float a){
		System.out.println("public void method (float a)= "+a);	
	}
	public void method (char a){
		System.out.println("public void method (char a)= "+a);
	}
	
	//인자의 수
	public void method (int a, int b){
		System.out.println("public void method (int a, int b)= "+a+", "+b);
	}
	/*
	//메소드 리턴타입
	public void method1 (){
		
	}
	public int method1 (){
		return 0;
	}
	
	//접근 지정자
	public void method2 (){
		
	}
	private void method2 (){
		
	}
	*/
	public static void main(String[] args) {
		Overloading ol = new Overloading();
		
	ol.method() ;
	ol.method(3.1f);
	ol.method(3);
	ol.method('K');
	ol.method(1, 2);

	}
}