자바

[자바] 오버라이딩, 오버로딩

코 밑 2024. 3. 28. 23:50
Contents

자바를 비롯해 객체지향 언어를 배우다 보면 자주 보게 되는 오버라이딩과 오버로딩

이들은 객체지향 언어의 특징이라기보다는 언어의 기능 중 하나이다.

이 두 기능은 앞 포스팅에서 설명했던 OOP의 다형성(polymorphism)을 표현하는 방법이다.

이름이 비슷해서 자주 헷갈린다.

그리고 면접에서 단골 질문이다. 이번 기회에 똑똑히 알아두고 가자.

 

https://commit.tistory.com/15

 

[자바] 객체지향언어(OOP)

안뇽하세요 코밑이에염! 먼저 옛날에 강사님께 들었던 간략한 프로그래밍 언어의 역사 C → C++ → Win32API → MFC → C# (MS) C++에서 파생 → JAVA 객체지향언어란 객체를 만들고 객체를 사용하는 프로

commit.tistory.com

 

오버라이딩(Overriding)

오버라이딩은 상속, 즉 자식 클래스(서브 클래스)가 부모클래스(수퍼 클래스)의 메소드를 상황에 맞게 재정의하는 것을 말한다.

 

조건 : 자식클래스에서 오버라이딩하고자 하는 메소드의 이름, 매개변수(파라미터), 리턴 값이 동일해야 한다.

 

예전의 기록

  • 부모의 메소드중 하나를 자식클래스에서 재정의
  • 부모의 내용을 변경, 추가해서 사용할 수 있게 해준다
  • 부모의 것을 사용. 그러나 껍데기만 사용 내용은 다름
  • 껍데기도 다른거 쓸거면 오버라이딩 왜함 그냥 새로 메소드 만들어서 써

오버라이딩의 예시

오버로딩(Overloading)

오버로딩은 한 클래스 내에 이미 이름이 같은 메소드가 있어도 매개변수의 개수나 매개변수의 타입이 다르면 같은 이름으로 메소드를 정의할 수 있다.

 

조건 : 위에서도 말했듯이 메소드의 이름이 같고, 매개변수의 개수나 타입이 달라야 한다. 그러나 리턴타입이 다르다면, 오버로딩이 아니다.

 

예전의 기록

  • 동일한 함수명으로 여러개의 함수를 제공해서 사용하게 해주는 기술
  • 규칙이 있다...! 매개변수의 타입, 또는 매개변수의 개수로 구별이 가능해야한다 뭐라도 달라야 함
  • 목적이 다른 함수끼리는 암묵적으로 오버로딩 금지
  • 리턴타입이 다를경우 -> 오버로딩 아님
  • 목적은 같고 용도가 달라야 함

오버로딩의 예시

 

요약

  • 오버라이딩 : 부모클래스에게 있던 메소드를 상속받아 재정의하는 것
  • 오버로딩 : 기존에 없던 메소드를 정의하는 것 단, 이름은 같고 매개변수의 개수, 타입이 달라야 함

'자바' 카테고리의 다른 글

스프링 시큐리티 + jwt 토큰  (4) 2024.11.29
[자바] 객체지향언어(OOP)  (2) 2024.03.24
[JAVA] 숫자 야구 게임  (8) 2023.07.19