오버로딩(Overloading) & 오버라이딩(Overriding)

Joy🌱·2022년 12월 29일
0

☕ Java

목록 보기
18/40
post-thumbnail

💁‍ 오버로딩(Overloading)이란,
동일한 메소드명으로 다양한 종류의 매개변수에 따라 다르게 처리해야하는 것을 관리하기위해 사용하는 기술

  • 동일한 메소드명의 매개변수의 타입, 개수, 순서를 다르게 작성
    (메소드의 시그니처(Signature)가 다르지만 메소드 명은 같게 함)

🙋‍ 잠깐 ! 왜 오버로딩을 사용하나요?

  • 동일한 기능의 메소드를 매개변수에 따라 다르게 메소드명을 정의하면 복잡하고 관리하기 어려워지기 때문에, 동일한 이름으로 다양한 종류의 매개변수에 따라 처리해야하는 여러 메소드를 동일한 이름으로 관리하기 위해 사용
    ex) System.out.println() 메소드는 모든 데이터 타입에 대해 출력할 수 있도록 메소드가 오버로딩 되어있음

👀 오버로딩 성립 테스트

public class OverloadingTest {
	
    // 기준 메소드
	public void test() {}
	
	>>> 메소드 시그니처가 동일한 경우 컴파일 에러 발생
//	public void test() {}
	
	>>> 접근 제한자에 따른 오버로딩 성립 확인 -!
//	private void test() {}
	
	>>> 반환형에 따른 오버로딩 성립 확인 -!
//	public int test() { return 0; }
	
	>>> 매개변수 유무에 따른 오버로딩 성립 확인 -!
	public void test(int num) {}
	
	>>> 매개변수의 이름은 메소드 시그니처에 영향을 주지않음
//	public void test(int num2) {}
	
	>>> 매개변수 갯수에 따른 오버로딩 성립 확인 -!
	public void test(int num1, int num2) {}
	
	>>> 매개변수 타입 변화에 따른 오버로딩 성립 확인 -!
	public void test(int num, String str) {}
	
	>>> 매개변수 순서 변화에 따른 오버로딩 성립 확인 -!
	public void test(String str, int num) {}
    
	}
}

💁‍ 오버라이딩(Overriding)이란,
부모클래스에서 상속받은 메소드를 자식클래스가 재정의하여 사용하는 것


👀 오버라이딩 성립 테스트

◼ SuperClass Class

public class SuperClass {

	// 기준이 되는 메소드
	public void method(int num) {}
	
	private void privateMethod() {}
	
	public final void finalMethod() {}
	
	protected void protectedMethod() {}
}

◼ SubClass Class

public class SubClass extends SuperClass {

	>>> 1. 메소드 이름 동일해야함
	>>> 2. 메소드 리턴 타입 동일해야함
	>>> 3. 매개변수부 동일해야함
	@Override
	public void method(int num) {}
	
	>>> 4. private 메소드 오버라이딩 불가
//	@Override
//	private void privateMethod() {}
	
	>>> 5. final 메소드 오버라이딩 불가 
//	@Override
//	public final void finalMethod() {}
	
	>>> 6. 부모 메소드의 접근 제한자와 같거나 더 넓은 범위로만 가능
//	@Override
//	void protectedMethod() {}
	>>> protected 보다 더 좁은 범위인 defalut나 private으로 변경 불가 (public은 가능)

👀 오버라이딩 & 오버로딩 차이


profile
Tiny little habits make me

0개의 댓글

관련 채용 정보