package ch02_overloading;

/*
 * 메서드 오버로딩 ( method overloading )
 * → class 안에 같은 이름의 메서드를 여러개 정의.
 *   매개변수 갯수, 타입만 다르면 하나의 이름으로 여러개의 메서드를 정의가능.
 * → 반환타입은 오버로딩 조건에 해당하지 않음.
 */

class Add{
	
	void addInt(int a, int b) {
		System.out.println("- addInt(int a, int b) -");
		int sum = a + b;
		resultInt(a, b, sum);
	}
	
	void addDouble(double a, double b) {
		System.out.println("- addDouble(double a, double b) -");
		double sum = a + b;
		resultDouble(a, b, sum);
	}
	
	void resultInt(int a, int b, int sum) {
		System.out.println(a + " + " + b + " = " + sum);
	}
	
	void resultDouble(double a, double b, double sum) {
		System.out.println(a + " + " + b + " = " + sum);
	}
	
	// 기능은 유사한데 자료형만 다를 경우, 동일한 method 이름으로 만들자.
	void addData(int a, int b) {
		System.out.println("- addData(int a, int b) -");
		int sum = a + b;
		result(a, b, sum);
	}
	// int addData(int a, int b) {}
	
	void addData(double a, double b) {
		System.out.println("- addData(double a, double b) -");
		double sum = a + b;
		result(a, b, sum);
	}
	
	void result(int a, int b, int sum) {
		System.out.println(a + " + " + b + " = " + sum);
	}
	
	void result(double a, double b, double sum) {
		System.out.println(a + " + " + b + " = " + sum);
	}
}

public class ExOverloading {

	public static void main(String[] args) {
		Add testA = new Add();
		testA.addInt(12, 35);
		testA.addDouble(3.3, 4.4);
		
		System.out.println();
		
		testA.addData(12, 35);
		testA.addData(3.3, 4.4);
	}

}
package ch02_overloading;

public class Max {
	/*
	 * Max class 를 정의하고, DataManager class 에서 테스트 하세요
	 * - 두개의 값을 넘겨받고, 두수 중에서 큰수를 찾아서 반환하는 기능이 있습니다
	 *   > 정수, 실수 타입 각각의 메서드
	 */
	// 비
	int findMax(int a, int b) {
		if(a > b) return a;
		else if(b > a) return b;
		else return 0;
	}
	
	double findMax(double a, double b) {
		if(a > b) return a;
		else if(b > a) return b;
		else return 0;
	}
	
	
}
--------------------------------------------------------------------------------

package ch02_overloading;

public class ShowArray {
	/*
	 * ShowArray class 를 정의하고, DataManager class 에서 테스트 하세요
	 * - 배열 변수 값을 넘겨받아서, 해당 배열의 값을 모두 출력하는 기능을 가지고 있습니다
	 *   > int, char 타입 배열의 값을 각각 출력하는 메서드
	 */
	void print(int[] arr) {
		for(int i=0;i<arr.length;i++) {
			System.out.print(arr[i] + " ");
		}
		System.out.println();
	}
	
	void print(char[] arr) {
		for(int i=0;i<arr.length;i++) {
			System.out.print(arr[i] + " ");
		}
		System.out.println();
	}
}

--------------------------------------------------------------------------------
package ch02_overloading;
public class DataManager {

	public static void main(String[] args) {
		Max max = new Max();
		System.out.println(max.findMax(24, 32));
		System.out.println(max.findMax(2.2, 2.3));
		
		System.out.println();
		
		ShowArray pr = new ShowArray();
		int[] iarr = {124, 42, 5525};
		char[] carr = {'h', 'o', 'm', 'e'};
		pr.print(iarr);
		pr.print(carr);
				
	}

}