저번 포스팅에서는 클래스에 대해서 배웠으니 이제 클래스의 기능을 알아보아야겠죠?
클래스의 기능에는 크게 3종류가 있습니다.
- 상속 : 클래스를 정의할 때 이미 구현된 클래스를 상속 받아서 속성이나 기능이 확장되는 클래스를 구현함
- 다향성 : 동일한 이름의 메서드가 객체의 타입에 따라 다르게 동작하는 것을 말함
- 추상화 : 복잡한 시스템의 세부 사항을 감추고, 필요한 부분만 노출함으로써 코드를 더 간단하고 명확하게 작성
상속
- 기존의 클래스가 가지고 있는 필드와 메서드를 그대로 물려받는 새로운 클래스를 만드는 것
- 새로운 클래스에서 필드, 메서드 추가 가능
- 공통점을 가진 내용을 상위 클래스에 둬서 일관되고 효율적인 코딩 가능
- 부모(슈퍼) 클래스, 자식(서브) 클래스
- ex)국가 클래스 (부모), 한국,일본, 중국(자식)
- 자식 클래스를 선언할 때 소괄호로 부모 클래스 포함시키기
이제 상속에 개념이 잡히지 않습니까?
아 참고로 부모 클래스에 생성자가 없으면, 자식클래스에서도 별도의 생성자를 구현하지 않아도 부모 클래스의 속성과 메서드를 바로 사용가능합니다.

만약 부모클래스에 생성자가 있을경우에는 자식 클래스에 생성자에서
super().__init__(호출 생성자)
로 명시적으로 호출해주어야 합니다. self는 생략가능!
주의!!!
자식클래스의 생성자 매개변수를 꼭 부모 클래스와 동일하게 안해도 되지만, 사용시에는 self.변수명으로 사용해주어야 합니다.
그럼 간단한 실습을 해봅시다.
실습(부모클래스, 자식클래스)
- 부모 클래스(Animal)을 선언
- 동물소리 메서드와, 움직임 메서드 선언
- 자식 클래스 (Dog)선언
- 강아지가 멍멍 짓습니다. 출력
이쯤 되면 한 부모당 한 자식만 상속 받을 수 있나? 라는 의문이 생길 수도 있습니다.

아닙니다. 하나의 자식클래스가 여러 부모 클래스를 상속 받을 수 있습니다.
예시르 보시면 어 하고 뭔가 달라진점이 있지 않으싶니까?
맞습니다. super()라는 호출 메서드가 사라지고 부모 클래스의 명이 들어가 있고, 또 self가 생략가능하다고 했는데 여기서는 사용되었습니다.
다중상속에서는 어디에서 상속받아야 하는지 알아야 하기 때문에 부모클래스 명이 사용되며, 명시적으로 호출이기 때문에 self가 필요합니다.
여기까지 따라 오셨다면 조금더 심화해보죠
다향성
- 다형성은 동일한 이름의 메서드가 객체의 타입에 따라 다르게 동작하는 것을 말함
- 주로 상속 관계에서 메서드 동작을 변경
- 다형성을 실현하는 기법중 하나로 오버라이딩이 존재
오버라이딩?
- 메서드 재정의(Method Overriding)
- 상속된 메서드의 내용이 자식 클래스에 맞지 않을 경우, 자식 클래스에서 동일한 메서드를 재정의 하는 것
- 즉, 자식 클래스는 부모 클래스의 기본 동작을 변경하거나 확장할 수 있음
- super().메서드명을 사용하여 자식 클래스에서 부모 클래스의 메서드를 호출 할 수있음
- 오버라이딩한 메서드는 부모 메서드의 매개변수 개수와 동일하게 사용하는 것을 권장
이제 쿨타임이 찼다고 하죠 어려운 코드 한번 해봅시다.
실습. 상속과 오버라이딩
- 주어진 부모클래스를 바탕으로 조건을 만족하는 자식 클래스 Electronic클래스와 Food클래스를 설계하여 보세요
- 결과
실습 해답예시는 이제 하루코딩에 올려놓았으니 참고부탁드립니다.
다음 포스팅은 이제 클래스 추상화에 대해서 알아보겠습니다.
다음 실습은 조금더 난이도가 있으니 이번 포스팅에 개념을 충분히 숙지하시고 오셔야합니다!!!!
오늘도 같이 공부하시느라 수고 많으셨습니다!!!!!!

'python 시작하기' 카테고리의 다른 글
python 모듈 (5) | 2024.12.06 |
---|---|
python 클래스 추상화 (1) | 2024.12.05 |
pythone +) 클래스 변수 실습 해답예시 , 건강상태 클래스 해답 예시 (0) | 2024.12.03 |
python class 변수와 캡슐화 (0) | 2024.12.03 |
python 클래스 (4) | 2024.12.02 |