1) 상속이 뭐에요?
상속은 기존 클래스의 특성을 그대로 물려받아 새로운 클래스를 만드는 것을 말합니다.
이를 통해 코드의 재사용성을 높이고 유지보수를 용이하게 할 수 있습니다
# 부모 클래스 class Animal: def speak(self): print("동물이 소리를 냅니다.") # 자식 클래스 class Dog(Animal): # Animal 클래스를 상속받음 def wag_tail(self): print("개가 꼬리를 흔듭니다.") # 자식 클래스의 객체 생성 dog = Dog() # 부모 클래스의 메서드 호출 dog.speak() # 출력: 동물이 소리를 냅니다. # 자식 클래스의 메서드 호출 dog.wag_tail() # 출력: 개가 꼬리를 흔듭니다. |
위 코드에서 Animal 클래스는 동물의 기본적인 특성을 나타내며, speak 메서드를 가지고 있습니다. 이후 Dog 클래스가 Animal 클래스를 상속받아 만들어졌습니다. 따라서 Dog 클래스는 Animal 클래스의 모든 특성과 메서드를 물려받습니다.
결과적으로 dog 객체를 생성하여 speak 메서드를 호출하면 부모 클래스인 Animal 클래스의 메서드가 실행되고, wag_tail 메서드를 호출하면 자식 클래스인 Dog 클래스의 메서드가 실행됩니다. 이처럼 상속을 통해 부모 클래스의 특성을 그대로 이어받고, 필요에 따라 추가로 확장하여 사용할 수 있습니다.
2) 다중상속이 뭐에요?
다중 상속은 하나의 클래스가 두 개 이상의 부모 클래스로부터 특성을 상속받는 것을 말합니다.
이를 통해 여러 부모 클래스의 특성을 동시에 상속받아 새로운 클래스를 정의할 수 있습니다.
# 첫 번째 부모 클래스 class Bird: def fly(self): print("새가 날아갑니다.") # 두 번째 부모 클래스 class Fish: def swim(self): print("물고기가 헤엄칩니다.") # 자식 클래스 (다중 상속) class Duck(Bird, Fish): # Bird와 Fish 2명의 부모 클래스를 당중 상속받고 있음 pass # 아무런 메서드도 추가하지 않음 # 다중 상속을 통해 Duck 클래스의 객체 생성 duck = Duck() # Bird 클래스의 메서드 호출 duck.fly() # 출력: 새가 날아갑니다. # Fish 클래스의 메서드 호출 duck.swim() # 출력: 물고기가 헤엄칩니다. |
위 코드에서 Duck 클래스는 Bird 클래스와 Fish 클래스를 모두 상속받았습니다. 따라서 Duck 클래스의 객체는 fly 메서드와 swim 메서드를 모두 가지게 됩니다.
결과적으로 duck 객체를 생성하여 fly 메서드를 호출하면 Bird 클래스의 메서드가 실행되고, swim 메서드를 호출하면 Fish 클래스의 메서드가 실행됩니다. 이처럼 다중 상속을 통해 여러 부모 클래스의 특성을 동시에 상속받아 새로운 클래스를 정의할 수 있습니다.
3) 실습
(1) 차 클래스를 상속받은 자전거 클래스를 정의해 보세요.
모범답안
class 차:
def __init__(self, 바퀴, 가격):
self.바퀴 = 바퀴
self.가격 = 가격
class 자전거(차):
pass
(2) 아래 코드가 나오도록 자전거 클래스를 정의해 보세요. 단, 자전거 클래스는 차 클래스를 상속받습니다.
>>bicycle = 자전거(2, 100)
>>bicycle.가격
100
모범답안
class 차:
def __init__(self, 바퀴, 가격):
self.바퀴 = 바퀴
self.가격 = 가격
class 자전거(차):
def __init__(self, 바퀴, 가격):
self.바퀴 = 바퀴
self.가격 = 가격
bicycle = 자전거(2,100)
print(bicycle.가격)
(3) 다음 코드의 실행 결과를 예상해 보세요.
class 부모:
def __init__(self):
print("부모입니다.")
class 자식(부모):
def __init__(self):
print("자식입니다.")
나 = 자식()
모범답안
자식입니다.
'파이썬 강좌(초급) > 8.클래스' 카테고리의 다른 글
8.클래스 - 7) pass, super 키워드 (3) | 2024.04.01 |
---|---|
8.클래스 - 6) 메서드오버라이딩 (3) | 2024.04.01 |
8.클래스 - 4) 멤버변수와 메서드 (3) | 2024.04.01 |
8.클래스 - 3) 생성자 (4) | 2024.04.01 |
8.클래스 - 2) 클래스 관련 용어 및 특징 (3) | 2024.04.01 |