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 |