Class Inheritance (상속)
- 기존에 정의해둔 클래스의 기능을 그대로 물려받을 수 있다.
- 기존 클래스에 기능 일부를 추가하거나, 변경하여 새로운 클래스를 정의한다.
- 코드를 재사용할 수 있게된다.
- 상속 받고자 하는 대상인 기존 클래스는 (Parent, Super, Base class 라고 부른다.)
- 상속 받는 새로운 클래스는(Child, Sub, Derived class 라고 부른다.)
- 의미적으로 is-a관계를 갖는다
class person:
def __init__(self, name, age):
self.name = name
self.age = age
def eat(self, food):
print('{}은 {}을 먹습니다.'.format(self.name, food))
def sleep(self, minute):
print('{}은 {}분 동안 잡니다.'.format(self.name, minute))
def work(self, minute):
print('{}은 {}분 동안 일합니다.'.format(self.name, minute))
class student:
pass
class employee:
pass
son = person('Sonny', 30)
son.eat('BBQ')
son.sleep(30)
son.work(60)
>> Sonny은 BBQ을 먹습니다.
>> Sonny은 30분 동안 잡니다.
>> Sonny은 60분 동안 일합니다.
기본적인 eat, sleep, work 메쏘드가 person 클래스 안에 있다.
class person:
def __init__(self, name, age):
self.name = name
self.age = age
def eat(self, food):
print('{}은 {}을 먹습니다.'.format(self.name, food))
def sleep(self, minute):
print('{}은 {}분 동안 잡니다.'.format(self.name, minute))
def work(self, minute):
print('{}은 {}분 동안 일합니다.'.format(self.name, minute))
class student(person): # person이기도 하기때문에 기본적인 것을 상속받을 수 있다.
def __init__(self, name, age):
self.name = name
self.age = age
class employee(person):
def __init__(self, name, age):
self.name = name
self.age = age
son = student('Sonny', 30) # 학생으로 인스턴스를 만들어도 상속받았기 때문에 작동한다.
son.eat('BBQ')
son.sleep(30)
son.work(60)
>> Sonny은 BBQ을 먹습니다.
>> Sonny은 30분 동안 잡니다.
>> Sonny은 60분 동안 일합니다.
student 클래스는 student(person)으로 person 클래스를 상속받았다.
student로 만든 인스턴스가 작동할 수 있는 것을 볼 수 있다.
'📌 Python' 카테고리의 다른 글
Python - 기본 타입으로 함수 만들기 (0) | 2021.01.21 |
---|---|
Python - method override, super (0) | 2021.01.20 |
Python - method (0) | 2021.01.20 |
Python - __init__ (0) | 2021.01.20 |
Python - class, object (0) | 2021.01.20 |