본문 바로가기
Study/Knowledge

[JAVA] Overloading 과 Overriding 차이

Overloading 과 Overriding 차이

 

두줄요약,  

오버로딩은 리턴타입이 같은 / 한 메소드의 이름을 / 다양한 매개변수로 구분하여 정의하여 사용하고

오버라이딩은 리턴타입과, 매개변수가 같은 / 한 부모클래스의 메소드의 이름을 / 자식 클래스에서 재 정의하여 사용하는 것이다.

   

 

 

 

Overloading(오버로딩)  - Overloading은"과적하다, 과부하"

 

- 같은 이름의 메소드를 여러개 정의하는 것

- 매개변수의 타입이 다르거나 개수가 달라야 한다.

* return type과 접근 제어자는 영향을 주지 않음.

 

Overloading 사용 조건 (둘 중 하나이상 충족 시)

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

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

  

 

왜 사용할까요?

   오버로딩이 없다면 void add_two(int a, int b) void add_three(int a, int b, int c)

   이렇게 복잡해 진답니다. 여기에서 int형 하나만이 아니고 float형까지

   구분해서 더하려면 더 헷갈리겠죠??

 

 

Overriding(오버라이딩) - Override는 "무시하다, 무효하다, 기각하다"

- 상속에서 나온 재 정의 개념 

- 상위 클래스(부모 클래스)의 메소드를 하위 클래스(자식 클래스)에서 재정의

 

 

  

   상속에 대해 알아봤으니 이제 위에서 정의한대로 오버라이딩을 사용해보겠습니다.

   "부모Class에서 정의한 메서드를 자식 Class에서 변경하는 것"

  

정의한대로 자식 Class에서 내용을 변경했고, 결과를 확인하니 잘 변경됬습니다.

   그런데 이걸 쓰는 이유가 뭘까요? 오버라이딩의 장점인 예제를 하나 보겠습니다.

   

   햄버거가게를 예를 들겠습니다.

   각 가격은 햄버거 : 2000원, 콜라 : 1000원, 감자튀김 : 500원 입니다

   햄버거+콜라+감자튀김을 따로 주문하는 경우와, 셋트로 주문하는 경우를 보겠습니다

   이처럼 자식 Class에서 내용을 변경해야 할 상황이 올 때 사용할 수 있습니다.

   자식 Class에서 재정의가 이루워질때 이를 최우선으로 한다 해서 사전적의미에

   Overriding을 사용하는 것 같습니다.

   오버라이딩도 오버로딩과 마찬가지로 메서드의 이름을 하나로 사용함으로 인해서

   개발 시 효율성을 높일 수 있습니다.

 

   오버라이딩 사용시 알아둬야 할 것이 더 있습니다.

   기본적인 조건인 메서드이름이 같아야한다던가 매개변수,

   리턴타입이 같아야한다는건 제외시키겠습니다. (따로 설명 안해도 바로 아실듯)

 

   

'Study > Knowledge' 카테고리의 다른 글

[JAVA] Primitive , Reference 차이  (0) 2020.03.22
[JAVA] String, int 초간단 형변환  (0) 2020.03.22
[Network] Session과 Cookie 차이  (0) 2020.03.21
[HTML/CSS] GET과 POST 방식 차이  (0) 2020.03.21
[HTML/CSS] Span과 Div 차이  (0) 2020.03.21