메서드 오버로딩 2

Mia Lee·2021년 11월 25일
0

JAVA

목록 보기
50/98
package ex_overloading;

public class Ex1 {

	public static void main(String[] args) {

		/*
		 * 메서드 오버로딩(매개변수 갯수 또는 순서가 다른 메서드)
		 * - 매개변수의 타입이 같더라도 갯수가 다르면 오버로딩이 성립된다!
		 *   => 단, 타입이 같은 매개변수간의 순서 변경은 오버로딩이 아님!
		 *   
		 */
		
		OverloadingMethod om = new OverloadingMethod();
		om.print(10, 20);
		om.print(10, 20, 30);
//		om.print(10, 20, 30, 40); // 오류 발생!
		// => 반드시 호출하려는 메서드의 매개변수 갯수 및 타입이 일치해야함
		
		System.out.println("=========================");
		
		om.sum(1, 3.14);
		om.sum(3.14, 1);
		om.sum(1, 2);
		
		
	}

}

class OverloadingMethod {
	// 매개변수 갯수가 다른 메서드 오버로딩
	// 정수 2개를 전달받은 print() 메서드 정의
	public void print(int n1, int n2) {
		
		System.out.println(n1 + ", " + n2);
		
	}
	
	// 정수 3개를 전달받는 print() 메서드 정의
	public void print(int n1, int n2, int n3) {
		
		System.out.println(n1 + ", " + n2 + ", " + n3);
		
	}
	
	// -----------------------------------------
	
	// 정수 1개와 실수 1개를 전달받는 sum() 메서드 정의
	public void sum(int num1, double num2) {
		
		System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
		
	}
	
	public void sum(double num1, int num2) {
		
		System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
		
	}
	
	public void sum(int num1, int num2) {
		
		System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
		
	}
	
	// 같은 데이터타입끼리의 순서는 바꿀수 없다! = 오버로딩 성립 X
//	public void sum(int num2, int num1) {
//		
//		System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
//		
//	}
	
	
}



연습

package ex_overloading;

public class Test1 {

	public static void main(String[] args) {

		/*
		 * 간단한 계산기(Calculator 클래스)
		 * - calc() 메서드 오버로딩
		 *   => 연산자(char opr) 1개와 정수 2 ~ 4개(int num1 ~ num4)를 전달받아
		 *      해당 연산자에 맞는 연산 결과를 출력하는 메서드 오버로딩
		 */
		
		Calculator c = new Calculator();
		c.calc('+', 10, 20); // 10 + 20 = 30 출력
		c.calc('-', 100, 10); // 100 - 10 = 90 출력
		c.calc('*', 10, 20); // 10 * 20 = 200 출력
		c.calc('/', 100, 2); // 100 / 2 = 50 출력
		
		c.calc('+', 10, 20, 30); // 10 + 20 + 30 = 60 출력
		c.calc('-', 100, 10, 20); // 100 - 10 - 20 = 70 출력
		c.calc('*', 10, 20, 30); // 10 * 20 * 30 = 6000 출력
		c.calc('/', 100, 2, 5); // 100 / 2 / 5 = 10 출력
		
		c.calc('+', 10, 20, 30, 40); // 10 + 20 + 30 + 40 = 100 출력
		c.calc('-', 100, 10, 20, 30); // 100 - 10 - 20 - 30 = 40 출력
		c.calc('*', 10, 20, 30, 40); // 10 * 20 * 30 * 40 = 240000 출력
		c.calc('/', 100, 2, 5, 2); // 100 / 2 / 5 / 2 = 5 출력
		
	}

}

class Calculator {
	
	public void calc(char opr, int num1, int num2) {
		
		int result = 0; // 연산의 결과를 저장할 변수
		
		switch (opr) {
			case '+' :
				result = num1 + num2; break;
			case '-' :
				result = num1 - num2; break;
			case '*' :
				result = num1 * num2; break;
			case '/' :
				result = num1 / num2; break;
		}
		
		System.out.println(num1 + " " + opr + " " + num2 + " = " + result);
		
	}
	
	public void calc(char opr, int num1, int num2, int num3) {
		
		int result = 0; // 연산의 결과를 저장할 변수
		
		switch (opr) {
			case '+' :
				result = num1 + num2 + num3; break;
			case '-' :
				result = num1 - num2 - num3; break;
			case '*' :
				result = num1 * num2 * num3; break;
			case '/' :
				result = num1 / num2 / num3; break;
		}
		
		System.out.println(num1 + " " + opr + " " + num2 + " " + opr + " " + num3 + " = " + result);
		
	}
	
	public void calc(char opr, int num1, int num2, int num3, int num4) {
		
		int result = 0; // 연산의 결과를 저장할 변수
		
		if (opr == '+') {
			result = num1 + num2 + num3 + num4;
		} else if (opr == '-') {
			result = num1 - num2 - num3 - num4;
		} else if (opr == '*') {
			result = num1 * num2 * num3 * num4;
		} else if (opr == '/') {
			result = num1 / num2 / num3 / num4;
		}
		
//		System.out.println(num1 + " " + opr + " " + 
//				num2 + " " + opr + " " + num3 + " " + opr + " " + num4 + " = " + result);
		System.out.printf("%3d %c %3d %c %3d %c %3d = %d\n", num1, opr, num2, opr, num3, opr, num4, result);
		
	}
	
}













0개의 댓글