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

김덕근·2022년 12월 22일
0

concept

목록 보기
11/21


오버라이딩(Overriding)

자식 클래스가 상속 받은 부모 메소드를 재작성 하는 것
부모가 제공하는 기능을 후손이 일부 고쳐 사용하겠다는 의미로
자식 객체를 통한 실행 시 후손 것이 우선권을 가짐

특징

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

성립 조건

  • 부모 클래스의 메소드와 자식 클래스의 메소드 비교
  • 메소드 이름 동일
  • 매개변수의 개수, 타입, 순서 동일
  • 리턴 타입 동일
  • private 메소드 오버라이딩 불가
  • 접근제한자는 부모 클래스의 메소드와 동일하거나 넓은 범위
    ex) (부모) protected => (자식) protected 또는 public
  • 예외처리 범위는 같거나 더 좁게

final 예약어

final 클래스

상속이 불가능한 클래스
public final class finalClass {}

final 메소드

상속 시 오버라이딩이 불가능한 메소드
public final void method() {}


오버로딩(Overloading)

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

성립 조건

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

주의 사항

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


대상에 따른 사용 가능한 제어자, 예약어

profile
안녕하세요!

0개의 댓글