이번 포스팅에서는 파이썬의 상속(Inheritance)에 대하여 공부를 해보고자 한다.
상속(Inheritance)
상속은 기존 클래스를 확장하여 instance 변수나 메소드를 추가하는 방식을 말한다.
이미 존재하는 클래스의 모든 특징을 물려받는 새로운 클래스를 손쉽게 생성할 수 있다.
기존 클래스를 직접 수정하지 않고, 기능을 추가하거나 변경하고 싶을 때 유용하게 사용할 수 있다.
이미 존재하던 클래스를 부모 클래스(parent class) 또는 기초 클래스(base class), 상위(Super) 클래스라고 부른다.
물려주는 클래스이고 좀 더 추상적이다.
상속을 통해 새롭게 생성되는 클래스를 자식 클래스(child class) 또는 파생 클래스(derived class), 하위(Sub) 클래스라고 부른다.
상속하는 클래스이고 좀 더 구체적이다.
클래스 상속
클래스를 선언할 때 다른 클래스를 상속받고 싶은 경우, 소괄호( )를 사용한다.
소괄호( ) 안에 상속받고 싶은 클래스명을 넣어 전달함으로써 해당 클래스의 모든 멤버를 상속한다.
예제
Person 클래스를 생성하고 함수를 정의한다.
class Person:
def go(self):
print("학교에 간다.")
def eat(self):
print("밥을 먹는다.")
Teacher 클래스를 생성하고 함수를 정의한다.
메소드를 Person에 정의하고 그것을 상속받아서 구현한다.
class Teacher(Person):
def teach(self):
print("수업을 가르친다.")
Student 클래스를 생성하고 함수를 정의한다.
메소드를 Person에 정의하고 그것을 상속받아서 구현한다.
class Student(Person):
def study(self):
print("수업을 듣는다.")
UniversityStudent 클래스를 생성하고 함수를 정의한다.
메소드를 Student에 정의하고 그것을 상속받아서 구현한다.
class UniversityStudent(Student):
def drink(self):
print('술을 마신다.')
Student 객체를 생성하고 속성(Attribute) 값들을 조회한다.
s = Student()
s.go()
s.eat()
s.study()
[실행결과]
학교에 간다.
밥을 먹는다.
수업을 듣는다.
Student 객체를 생성하고 속성(Attribute) 값들을 및 조회한다.
t = Teacher()
t.go()
t.eat()
t.teach()
[실행결과]
학교에 간다.
밥을 먹는다.
수업을 가르친다.
UniversityStudent 객체를 생성하고 속성(Attribute) 값들을 조회한다.
us = UniversityStudent()
us.go()
us.eat()
us.study()
us.drink()
[실행결과]
학교에 간다.
밥을 먹는다.
수업을 듣는다.
술을 마신다.
'Back-End > Python' 카테고리의 다른 글
[Python] super 함수 (0) | 2022.09.27 |
---|---|
[Python] 메소드 재정의 (Method Overriding) (0) | 2022.09.27 |
[Python] 정보 은닉(Information Hiding) (0) | 2022.09.27 |
[Python] 객체지향 프로그래밍(OOP) (2) | 2022.09.26 |
[Python] 일급 (시민) 객체(first-class citizen) (2) | 2022.09.25 |