Code States | 오버라이딩과 오버로딩

yeonk·2022년 5월 24일
1
post-thumbnail

어제 진행한 기술면접 파트에서 내가 선택한 주제는 '오버라이딩과 오버로딩의 차이'였다.
'생성자' 키워드도 선택했으나, 이전 글인 OOP 기초 파트에서 정리를 해서 오늘은 '오버라이딩'과 '오버로딩'을 주제로 글을 써보려고 한다.






1. 메소드 오버라이딩(Method Overriding)


'부모 클래스(상위 클래스)의 메소드를 재정의하여 우선적으로 사용하는 것으로 상속받은 메소드를 필요에 따라 변경하는 것'이다.






특징

  • final, private 메소드는 오버라이딩 불가

  • 객체 지향 프로그래밍의 특징 중 다형성을 지원






조건

  • 상속 관계에서 적용

  • 메소드의 이름, 리턴타입, 매개변수의 수와 타입의 일치

  • 하위 클래스의 메소드 접근제어 지시자는 상위 클래스보다 범위가 크거나 같아야함

  • 오버라이드 하고자 하는 메소드가 상위 클래스에 존재해야함






2. 메소드 오버로딩(Method Overloading)


다른 메소드를 중복으로 선언하는 것으로 한 클래스 내에 여러 개의 같은 이름의 메소드를 정의하는 것이다.

일반적으로 메소드는 하나의 기능을 구현하지만, 메소드 오버로딩을 사용하면 하나의 메소드로 여러 기능을 구현할 수 있다.






조건

  • 메소드가 처리하는 기능은 동일

  • 시그니처(매개변수의 개수와 자료형)를 다르게 적용

  • 동일한 메소드 이름을 부여하여 정의

  • 같은 클래스 내에서 적용






특징

  • 리턴형은 같아도 되고 달라도 된다.

  • 모든 접근 제어자 사용 가능하다.

  • 대표적인 예로 System.out.println()이 있음






사용 이유

  • 같은 기능을 하는 메소드를 하나의 이름으로 사용할 수 있음

  • 메소드의 이름 절약

  • 코드의 통일성과 효율성을 높일 수 있음

  • 프로그램의 가독성 증가






3. 다형성(polymorphism)


  • 하나의 요소가 여러가지 자료형(여러형태)로 표현될 수 있음을 의미

  • 하나의 메서드나 클래스가 있을 때 그 것이 다양한 방법으로 동작하는 것






4. 공통점과 차이점


오버라이딩오버로딩
메소드명 통일OO
매개변수 타입과 수동일하게 작성동일하게 작성 불가
접근 제어자 제한제한적모두 가능
리턴형동일하게 작성무관
다형성 지원OO
적용 범위상속 관계같은 클래스 내






5. 참고 자료


[JAVA] 메소드 오버로딩 / 메소드오버라이딩

overloading vs. overriding

[JAVA] 오버로딩(Overloading)과 오버라이딩(Overriding)의 차이점

[Java]오버로딩 & 오버라이딩(Overloading & Overriding)

메소드 오버로딩(Overloading)과 오버라이딩(Overriding)의 차이 이해하기

[JAVA] 자바 다형성(POLYMORPHISM) 개념부터 응용 쉬운 설명

0개의 댓글