JAVA- 메소드 오버로딩 method overloading

2023. 1. 25. 16:42코딩일기/JAVA

메소드 오버로딩(method overloading)

같은 이름의 메서드매개변수 구성만 다르게 해서 선언하는 것

 

 
public class Main {
	public static void main(String[] args) {

		// 메소드가 왜 필요한지에 대해 알아봤으니
		// 클래스의 메소드를 정의하는 4가지의 문법적 모습 [ 리턴타입 O/X, 파라미터 O/X ]
		Test t = new Test();

		t.aaa(); // 1)

		t.aaa(5); // 2)

		int k = t.bbb(); // 3)
		System.out.println(k);

		int n = t.bbb(5); // 4)
		System.out.println(n);

		System.out.println();

		// 사칙연산을 해주는 계산기 객체 생성(기능[메소드]만 있는 클래스)
		Calculator cal = new Calculator();

		int a = 10;
		int b = 5;

		int sum = cal.sum(a, b);
		int sub = cal.subtract(a, b);
		int mul = cal.multiply(a, b);
		int div = cal.divide(a, b);

		System.out.println(sum);
		System.out.println(sub);
		System.out.println(mul);
		System.out.println(div);

		// 실수형 숫자들의 사칙연산 의뢰
		double c = 3.5;
		double d = 4.6;

		System.out.println(cal.sum(c, d));
		System.out.println(cal.subtract(c, d));
		System.out.println(cal.multiply(c, d));
		System.out.println(cal.divide(c, d));

		// 이런식으로 같은 기능인데 자료형이 다를 때 활용하는 문법 - 오버로딩

		// 좀 더 확장하면 GUI 환경에서는 모든 데이터가 문자열 타입임.
		System.out.println(cal.sum("245", "487"));
		System.out.println();

		// 가변인자 ... 연산자
		cal.add();
		cal.add(5);
		cal.add(5, 3);
		cal.add(5, 3, 6);
		cal.add(5, 3, 8, 7);
	}
}
public class Calculator {

	// 사칙연산 기능들 : 메소드

	int sum(int x, int y) {
		return x + y;
	}

	int subtract(int x, int y) {
		return x - y;
	}

	int multiply(int x, int y) {
		return x * y;
	}

	int divide(int x, int y) {
		return x / y;
	}

	// 위 4개의 기능은 모두 정수형만 처리하니
	// 실수형 사칙연산 기능이 별도로 있어야 함.
	// 별도의 덧셈기능이라며 함수 이름을 다르게 하면
	// 함수의 이름을 똑같이 하고 파라미터를 다르게 적용하는 문법
	// 메소드 오버로딩 (Overloading)

	double sum(double x, double y) {
		return x + y;
	}

	double subtract(double x, double y) {
		return x - y;
	}

	double multiply(double x, double y) {
		return x * y;
	}

	double divide(double x, double y) {
		return x / y;
	}

	// 숫자모양의 문자열 데이터들의 산술 덧셈 결과 리턴해주는 기능 메소드
	// 덧셈기능 sum 메소드의 오버로딩
	int sum(String x, String y) {
		// 문자열을 정수로 변환해주는 기능(메소드)을 이용
		int a = Integer.parseInt(x);
		int b = Integer.parseInt(y);
		return a + b;
	}

	// 전달받은 값의 누적된 덧셈결과를 계산하는 기능
	// 파라미터의 개수가 몇개일지 모를때 사용하는 특별한 매개변수 연산자 ...
	// 가변 길이 인자
	void add(int... ns) {
		// ns는 배열객체가 됨.
		System.out.println("전달받은 데이터 개수 : " + ns.length);
		for (int i : ns) {
			System.out.print(i + ", ");
		}
		System.out.println();

		int k = 0;
		for (int i : ns) {
			k += i;
		}
		System.out.println("합 : " + k);
	}
}
public class Test {

	// 1) 리턴X 파라미터X
	void aaa() {
		System.out.println("aaa");
	}

	// 2) 리턴X 파라미터O
	void aaa(int n) {
		System.out.println("n: " + n);
	}

	// 3) 리턴O 파라미터X
	int bbb() {
		return 10;
	}

	// 4) 리턴O 파라미터O
	int bbb(int n) {
		return n * 3;
	}
}

 

반응형

'코딩일기 > JAVA' 카테고리의 다른 글

Java-상속 Inheritance  (0) 2023.01.27
Java - 생성자 Constructor  (0) 2023.01.26
JAVA-객체 지향 프로그래밍(OOP)  (0) 2023.01.25
Java-Method  (0) 2023.01.25
JAVA-Array 연습 문제 풀기  (0) 2023.01.25