개발자 기술 면접 준비/정리

오버라이딩 VS 오버로딩

ucong 2021. 5. 31. 15:23

오버라이딩

- 부모Class에서 정의한 메서드를 자식 Class에서 변경하는 것 (메소드 재정의)

 

ex) 상속관계에 있는 부모클래스 A와 자식클래스 B사이에서 부모클래스 A가 C메서드를 가질때 B는 자연스럽게 A클래스의 메서드 C를 상속받게 된다. 하지만 이는 자식클래스 B사이에서 원하는 기능이 아닐 때 오버라이딩을 통해 자식클래스 B에서 한번더 메소드 C를 정의하여 자식클래스 B만에서의 메서드 C를 가지는것 (= 덮어쓰기)

 

사용 시 조건

- 부모클래스의 메서드랑 메서드이름이 같던가 매개변수, 리턴타입이 같아야 함

- 자식클래스의 접근 지시 제어자는 부모클래스의 것보다 넓거나 같아야함
- 예외는 부모의 클래스의 메소드 보다 많이 선언 불가능

 

* Static 메서드는 오버라이딩 허용 X -> 클래스에 속하는 메소드이기 때문

 

오버로딩

- 같은 클래스 내에서 같은 이름의 메서드를 사용하는 것 ( 오로지 매개변수 차이로만 구현 ) 

 

사용 시 조건

- 매개변수 타입이 달라야 한다.

- 매개변수 개수가 달라야 한다.

* 둘중 하나만 만족해도 사용가능

 

 

오버라이딩 VS 오버로딩

 

  오버라이딩 오버로딩
접근제어자 부모 클래스의 메소드의 접근제어자보다 같거나 더 넓은 범위의 접근 제어자를 자식 클래스 메소드에서 설정 가능 모든 접근 제어자 사용가능
리턴형 동일해야 함 달라도 됨
메소드명 동일해야 함 동일해야함
매개변수 동일해야 함 달라야 함
적용 범위 상속관계에서 적용 같은 클래스 내에서 적용

- 오버라이딩이 상속받은 메서드의 내용을 변경하는 것이라면 오버로딩은 기존에 없는 새로운 매서드를 정의하는 것!

 

 

 

[ 참고 ]

https://ucong-9796.tistory.com/33

https://ucong-9796.tistory.com/35

https://hyoje420.tistory.com/14

'개발자 기술 면접 준비 > 정리' 카테고리의 다른 글

지역변수 VS 전역변수  (0) 2021.05.31
접근제한자  (0) 2021.05.31
추상클래스 VS 인터페이스  (0) 2021.05.29
인터페이스란?  (0) 2021.05.29
추상클래스란?  (0) 2021.05.29