본문 바로가기
  • 콩's 코딩노트
JAVA

JAVA - 메소드 오버로딩(Method Overloading)

by Cong_S 2022. 7. 1.
// 두 개의 데이터를 더하는 클래스
public class Add {
	
	// 두 개의 정수를 더해주는 함수
	int addInt(int x, int y) {
		return x+y;
	}
	// 두 개의 실수를 더해주는 함수
	float addFloat(float x, float y) {
		return x+y;
	}
	// 두 개의 더블을 더해주는 함수
	double addDouble(double x, double y) {
		return x+y;
	}
	// 두 개의 문자열을 더해주는 함수
	String addSrting(String x, String y) {
	return x+y;
	}

위와 같이 모두 더하는 기능이지만 각각의 데이터 타입이 달라 새로운 함수를 매 번 만들어야하는 상황이다.

JAVA 특성상 파이썬과 다르게 데이터 타입을 명시해야만 하기 때문이다.

 

하지만 이는 비효율적이므로 

메소드 오버로딩(Method Overloading) 이용하자.

 

		int add(int x, int y) {
			return x+y;
		}
		// 두 개의 실수를 더해주는 함수
		float add(float x, float y) {
			return x+y;
		}
		// 두 개의 더블을 더해주는 함수
		double add(double x, double y) {
			return x+y;
		}
		// 두 개의 문자열을 더해주는 함수
		String add(String x, String y) {
		return x+y;

처음 코드와 다른 점은 기능과 모습은 같고 메소드의 이름만 같다는 것이다.

이런 식으로 코딩해도 데이터타입은 다르기 때문에 정상작동해준다.

 

필수 조건은 여러 함수의 파라미터나,리턴 데이터 타입이 달라야한다는 점이다.  

 

public class AddMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// 객체 생성
		Add a = new Add();
		
		int result = a.add(3, 6);
		System.out.println(result);
		
		// 2개의 float 을 더하는 함수를 만들고 싶다.
		float result2 = a.add(3.5f, 4.8f);
		System.out.println(result2);
		
		// 2개의 double을 더하는 함수를 만들고 싶다.
		double result3 = a.add(3.8, 2.9);
		System.out.println(result3);
		
		// 2개의 double을 더하는 함수를 만들고 싶다.
		String result4 = a.add("안녕? " , "하세요우.");
		System.out.println(result4);
	}
}

정상적으로 값을 도출해준다.

 

이처럼 각각의 함수의 데이터타입이 명확하게 다를 시에

메소드의 이름이 같아도 정상작동되게 하는 것을 

메소드 오버로딩(Method Overloading)이라 한다.

댓글