오버라이딩, 오버로딩

2021. 9. 23. 23:54Java

반응형

Overriding

자식 클래스가 상속 받은 부모 메소드를 재정의

 

메소드 헤드라인 위에 반드시 Annotation, @Override 표시

접근 제어자는 부모보다 더 좁은 범위 변경 불가

부모 메소드의 예외처리 클래스 처리범위보다 더 큰 범위의 예외 선언 불가

 

 

오버라이딩 조건

  • 부모와 자식의 메소드 이름 동일
  • 메소드 매개변수의 갯수와 데이터 타입 그리고 순서 동일
  • 메소드의 리턴 타입 동일

 

출처: opentutorials.org

부모와 자식의 코드가 중복(같은 로직)될 경우 중복은 제거되어야만 함

이럴 경우 자식이 부모의 메소드를 호출하기 위해 super 사용하여 중복 제거

 


 

Overloading

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

 

출처 : opentutorials.org

 

오버로딩 조건

  • 같은 메소드 이름
  • 다른 매개변수(타입, 개수, 순서)
  • 리턴타입이 달라도 오버로딩 불가

 

 

오버라이딩(Overriding) 오버로딩(Overloading)
자식 클래스에서 메소드 정의 같은 클래스 내에서나 상속 관계서 메소드 정의
메소드 이름, 매개변수(개수, 타입, 순서), 리턴 타입 동일 메소드 이름 동일, 매개변수(개수, 타입, 순서) 다름, 리턴타입 무관
동적 바인딩. 실행 시간에 오버라이딩된 메소드 찾아 호출 정적 바인딩. 컴파일 시에 중복된 메소드 중 호출되는 메소드 결정
자식 메소드의 예외 처리가 부모보다 더 큰 범위 선언 불가 예외처리 상관 없음

 

반응형

'Java' 카테고리의 다른 글

abstract / final / interface  (0) 2021.10.12
캡슐화, setter과 getter메소드  (0) 2021.09.28
상속, super과 super()  (0) 2021.09.17
클래스, 인스턴스와 객체  (0) 2021.09.15
public static void main (String[] args)  (0) 2021.09.14