객체 지향 프로그래밍의 4개의 기둥상속배달도 해 주세요

Q

raise_pay 부분

조회 212

좋아요 0

2021년 6월 10일

A
1개의 답변이 있어요
2021년 6월 10일

댓글 2

2021년 6월 16일
아 제가 말을 좀 이상하게 했네요 ㅠㅠ 저는 DeliveryMan의 raise_pay 메소드와 Employee의 raise_pay 메소드가 같다고 생각해서 super()를 사용했습니다. 그런데 해설에는 self.wage = .. 뭐 이런식으로 Employee의 raise_pay 메소드와 동일하게 다시 적혀있더라구요! 그래서 어떤 이유에서 super를 사용하지 않았는지 궁금해서 질문드렸습니다 ㅠㅠ
2021년 6월 16일
메소드의 재정의에 대해서 궁금증을 가지셨던 것 같습니다. 상속받았지만 왜 부모의 메소드를 가지고 있지 않은가? 그래서 raise_pay라는 메소드를 DeliveryMan이 가지게 했고 super().raise_pay()를 호출해주신건데요. 모든 메소드를 부모와 같은데도 불구하고 매번 적어줘야 한다면 중복된 처리라고 볼 수 있습니다. 그냥 부모의 것을 가져다 쓰면 되는데도 불구하고 다시 정의해서 쓰는거니까요.

그렇기 때문에 OOP 개념에서 상속 받았고 부모 클래스의 메소드와 다른 점이 없이 동일한 특징을 가진다면 굳이 재정의할 필요 없습니다. 왜냐하면 재정의 하지 않으면 부모의 메소드를 사용하기 때문입니다. 즉, raise_pay 메소드를 DeliveryMan 클래스에서 재정의 할 필요 없습니다. 그 결과, Employee와 raise_pay 함수가 같다면 굳이 super().raise_pay()를 할 필욘 없다는 말입니다.

(주) 코드잇

대표강영훈

개인정보보호책임자강영훈

이메일support@codeit.kr

사업자 번호313-86-00797

통신판매업제 2019-서울중구-1034 호

주소서울특별시 중구 청계천로 100 시그니쳐타워 동관 10층 코드잇