프로그래밍/Python
[Python] Class Inheritance (상속)
eunki
2021. 8. 16. 22:47
728x90
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 Employee(Person):
def __init__(self, name, age):
self.name = name
self.age = age
bob = Employee('Bob', 25)
bob.eat('BBQ') # Bob은 BBQ를 먹습니다
bob.sleep(30) # Bob은 30분동안 잡니다
bob.work(60) # Bob은 60분동안 일합니다
method override
- 부모 클래스의 method를 재정의(override)한다.
- 하위 클래스(자식 클래스)의 인스턴스로 호출시, 재정의된 메소드가 호출된다.
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):
def __init__(self, name, age):
self.name = name
self.age = age
def work(self, minute):
print('{}은 {}분동안 공부합니다'.format(self.name, minute))
class Employee(Person):
def __init__(self, name, age):
self.name = name
self.age = age
def work(self, minute):
print('{}은 {}분동안 업무를 합니다'.format(self.name, minute))
bob = Student('Bob', 25)
bob.eat('BBQ') # Bob은 BBQ를 먹습니다
bob.sleep(30) # Bob은 30분동안 잡니다
bob.work(60) # Bob은 60분동안 공부합니다
aaron = Employee('Aaron', 25)
aaron.eat('BBQ') # Aaron은 BBQ를 먹습니다
aaron.sleep(30) # Aaron은 30분동안 잡니다
aaron.work(60) # Aaron은 60분동안 업무를 합니다
super
하위클래스(자식 클래스)에서 부모 클래스의 method를 호출할 때 사용한다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def work(self, minute):
print('{}은 {}분동안 준비를 합니다'.format(self.name, minute))
class Student(Person):
def __init__(self, name, age):
self.name = name
self.age = age
def work(self, minute):
super().work(minute)
print('{}은 {}분동안 공부합니다'.format(self.name, minute))
class Employee(Person):
def __init__(self, name, age):
self.name = name
self.age = age
def work(self, minute):
super().work(minute)
print('{}은 {}분동안 업무를 합니다'.format(self.name, minute))
bob = Student('Bob', 25)
bob.work(60) # Bob은 60분동안 준비를 합니다
# Bob은 60분동안 공부합니다
aaron = Employee('Aaron', 25)
aaron.work(60) # Aaron은 60분동안 준비를 합니다
# Aaron은 60분동안 업무를 합니다
728x90