본문 바로가기

Python/객체지향 프로그래밍

(Python) 객체지향 프로그래밍 - 추상 클래스

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 라는 어노테이션을 추상 메서드 위에 붙여준다.