오버로딩 vs 오버라이딩 (23.05.03)

·2023년 5월 3일
0

Java

목록 보기
23/35
post-thumbnail

헷갈리기 쉬운 오버로딩과 오버라이딩에 대해 정리해 보았다.

📝 오버로딩(Overloading)

한 클래스 내에서 같은 이름의 메소드를 여러 개 정의하는 것

✏️ 성립 조건

① 같은 메소드 이름
② 다른 매개변수 선언부(매개변수 타입, 개수, 순서)

✏️ 주의 사항

메소드의 리턴 타입은 오버로딩 조건과 관계 없음


📝 오버라이딩(Overriding)

자식 클래스가 상속받은 부모 메소드를 재작성하는 것

-> 부모가 제공하는 기능을 후손이 일부 고쳐 사용하겠다는 의미로
자식 객체를 통한 실행 시 후손의 것이 우선권을 가짐

✏️ 특징

  • 메소드 헤드라인 위에 반드시 Annotation, @Override 표시
  • 접근 제어자를 부모 것보다 같거나 넓은 범위로 변경 가능
  • 부모 메소드의 예외처리 클래스 처리범위보다 좁은 범위로 예외처리 클래스 수정 가능

✏️ 성립 조건

(부모 클래스의 메소드와 자식 클래스의 메소드 비교)
① 메소드 이름 동일
② 매개변수의 개수, 타입, 순서 동일
③ 리턴 타입 동일
④ private 메소드 오버라이딩 불가


💡 오버라이딩(Overriding)과 오버로딩(Overloading) 비교

오버라이딩(Overriding)오버로딩(Overloading)
하위 클래스에서 메소드 정의같은 클래스에서 메소드 정의
메소드 이름 동일
매개변수 동일(개수, 타입, 순서)
리턴 타입 동일
메소드 이름 동일
매개변수 다름(개수, 타입, 순서)
리턴 타입 상관 없음
자식 메소드의 접근 범위가
부모 메소드의 접근 범위보다 넓거나 같아야 함
접근 제어자와 상관 없음
자식 메소드의 예외 수가
부모 메소드의 예외 수보다 적거나
범위가 좁아야 함
예외 처리와 상관 없음
profile
풀스택 개발자 기록집 📁

0개의 댓글