728x90
추상 클래스란 클래스 안에 추상 메서드가 최소 1개 이상 존재하는 클래스이다. 추상 클래스라고 추상 메서드만 존재하지 않아도 된다.
추상 클래스는 선언부만 존재하고, 구현부는 없는 클래스이다.
추상클래스는 인스턴스를 절대로 생성할 수 없다.
상속을 통해 자손 클래스에서 추상 메서드를 전부 오버라이딩 한 경우에만 인스턴스 생성이 가능하다.
그러면 추상 클래스를 왜 이용할까?
추상클래스를 상속받는 각각의 자손클래스에서 다른 내용으로 구현될 것을 예상하고 뼈대 즉 가이드라인만 만드는 목적으로 활용한다.
from abc import *
class StudentBase(metaclass = ABCMeta):
@abstractmethod
def study(self):
pass
@abstractmethod
def go_to_school(self):
pass
# Student 클래스는 추상메서드를 한개 미구현했으므로 인스턴스를 만들 수 없다.
class Student(StudentBase):
def study(self):
print("공부를 합니다.")
class Student1(Student):
def go_to_school(self):
print("학교를 갑니다.")
if __name__ == "__main__":
# 추상클래스는 절대로 인스턴스를 생성할 수 없다.
# 상속을 통하여 자손클래스에서 추상메서드를 전부 오버라이딩
# 했을 때 가능하다.
student1 = Student1()
student1.study()
student1.go_to_school()
추상클래스 이용 방법
1. from abc import *
2. metaclass = ABCMeta
3. @abstractmethod 라는 어노테이션을 추상 메서드 위에 붙여준다.
'Python > 객체지향 프로그래밍' 카테고리의 다른 글
(Python) 객체지향 프로그래밍 - 다형성 Polymorphism (0) | 2024.01.23 |
---|---|
(Python) 객체지향 프로그래밍 - 클래스의 다중 상속 (0) | 2024.01.23 |
(Python) 객체지향 프로그래밍 - 클래스 상속 (private) (0) | 2024.01.23 |
(Python) 객체지향 프로그래밍 - 클래스 상속 (1) (0) | 2024.01.16 |
(Python) 파이썬 변수 종류 / None / 오버로딩 & 오버라이딩 (0) | 2024.01.15 |