개발자 미니민의 개발스터디

[JAVA] 자바 - 메소드 오버로딩 overloading

by mini_min

[JAVA]
메소드 오버로딩 overloading 

개발자 면접 단골 질문(?) 이라고 불리는 기본 중 기본인 '오버로딩' 개념을 배웠다. over + loading  말 그대로 뛰어넘어(?) 읽는 다는 의미라고 기억하면 편할듯하다.

 

 

✔️오버로딩이란?

한 클래스 내에서 이름이 같은 메소드를 정의하는 것으로 성립 조건이 따로 있다.

- 매개변수 타입이 다르거나 매개변수의 개수가 달라야한다.

그래야 매개변수로 구분해서 호출이 가능하지

- 매개변수는 같으나 반환형이 다를 경우 컴파일 오류

- 리턴 타입은 오버로딩 구현에 아무런 영향 ❌

- 생성자도 중복 정의가 가능하다.

 

 

❌ 잘못 작성한 것

int add(int a, int b) {...}

int add(int a, int b) {...} 

= 매개변수 타입 같고, 개수도 같네 탈.락.

 

 

 

✔️ 오버로딩 예문 (기본자료형)

	public void disp(short a) {
		System.out.println("short ...");
	}
	
	public void disp(int a) {
		System.out.println("int ...");
	}
	
	public void disp(float a) {
		System.out.println("disp...");
	}

◾ 매개변수 타입이 모두 다르다!

이때, a 값이 어떤 타입이냐 or 어떤 타입에 더 가깝냐에 따라 출력되는 문장이 다르겠지?

byte a = 10; 의 경우 : short a 매개변수로 들어감

 

💡 why? 

기본 자료형은 매개변수의 타입이 동일한 타입이 존재하지 않으면 큰 자료형 중 가장 가까운 타입을 출력하기 때문!

(당연하게 작은 자료형으로 들어가진 못함)

 

 

 

✔️ 오버로딩 예문 (클래스)

public void disp(Short a) {		//대문자 로 시작
		System.out.println("Short ...");
	}
	
	public void disp(int a) {
		System.out.println("int...");
		
	}
	
	// Long 클래스 : long형에 대응하는 클래스
	public void disp(Long a) {
		System.out.println("Long...");
	}
	
	public void sub(Long a) {
		System.out.println("Integer...");
	}

◾ 대문자로 시작하는 것들 = 클래스

Short 클래스 : short 에 대응하는 클래스다.

long b = 10; 이라고 할 때, long 형을 처리할 메소드는 없다.

이때, Wrapper 클래스의 Long 이 출력된다. 또한, 클래스끼리 형변환 크기 비교는 하지 않는다. (누가 크다 이런거 안따짐)

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기