📝 상속
🖥️ 1. 상속이란
- 기존에 정의해둔 클래스의 기능을 그대로 물려받음
- 기존 클래스에 기능 일부를 추가하거나 변경하여 새로운 클래스를 정의
- 상속을 받고자 하는 대상인 기존 클래스를
부모, parent, super, base 클래스 라고 부름
- 상속 받는 새로운 클래스를
자식, child, sub 클래스라고 부름
class Animal :
def __init__(self, name, age) :
self.name = name
self.age = age
def eat(self, food) :
print('{}은 {}를 먹습니다.'.format(self.name, food))
def sleep(self, hour) :
print('{}은 {}시간 동안 잡니다.'.format(self.name, hour))
animal = Animal("동물", 5)
animal.eat('먹이')
animal.sleep('5시간')
[결과]
동물은 먹이를 먹습니다.
동물은 5시간시간 동안 잡니다.
class Dog(Animal) :
pass
Dog1 = Dog('뽀삐', 10)
Dog1.eat('사료')
Dog1.sleep(8)
[결과]
뽀삐은 사료를 먹습니다.
뽀삐은 8시간 동안 잡니다.
🖥️ 2. 메서드 오버라이딩
- 자식 클래스의 인스턴스로 호출 시, 재정의된 메서드가 호출됨
class Animal :
def __init__(self, name, age) :
self.name = name
self.age = age
def eat(self, food) :
print('{}은 {}를 먹습니다.'.format(self.name, food))
def sleep(self, hour) :
print('{}은 {}시간 동안 잡니다.'.format(self.name, hour))
class Dog(Animal) :
def eat(self, food) :
print('{}는 {}를 아주 맛있게 먹습니다.'.format(self.name, food))
animal = Animal('동물', 5)
animal.eat('먹이')
animal.sleep(5)
[결과]
동물은 먹이를 먹습니다.
동물은 5시간 동안 잡니다.
Dog1 = Dog('뽀삐',10)
Dog1.eat('사료')
Dog1.sleep(5)
[결과]
output
뽀삐는 사료를 아주 맛있게 먹습니다.
뽀삐은 5시간 동안 잡니다.
🖥️ 3. 다중상속
class Animal :
def __init__(self, name, age) :
self.name = name
self.age = age
def eat(self, food) :
print('{}은 {}를 먹습니다.'.format(self.name, food))
def sleep(self, hour) :
print('{}은 {}시간 동안 잡니다.'.format(self.name, hour))
class Human :
def __init__(self, name, age) :
self.name = name
self.age = age
def study(self, hour) :
print('{}는 {}시간 동안 공부합니다. '.format(self.name, hour))
class Kim(Animal, Human) :
pass
kim = Kim('김자바', 20)
kim.eat('밥')
kim.study(4)
[결과]
김자바은 밥를 먹습니다.
김자바는 4시간 동안 공부합니다.