python

class - 추상클래스

bono.html 2022. 10. 11. 12:57

추상클래스

자식클래스에서 부모 메소드의 이름을 강요하기 위해서 사용한다

 

추상 클래스의 기본적인 형태

추상 클래스는 객체 생성이 불가능하다. 오직 부모 클래스의 역할만 한다.

추상메소드가 필요하다면 @abstractclassmethod를 붙여준다.

from abc import *

class AbstractClass(metaclass = ABCMeta): #추상 클래스가 된다
    @abstractclassmethod
    def myMethod(self):   # 추상 메소드가 된다.
        pass
    
    def normalMethod(self):
        print('추상 클래스는 일반 메소드를 가질 수도 있다')

# 추상클래스는 객체 생성이 불가능하다.
# parent = AbstractClass()

 

 

추상 클래스를 참고하는 자식클래스

class Child1(AbstractClass):
    name = '난 Child1'
    
    def myMethod(self):  
        print('child1에서 추상 메소드에 내용을 적용')
    
c1 = Child1()
print(c1.name)
c1.myMethod()

난 Child1
child1에서 추상 메소드에 내용을 적용

 

 

추상클래스를 활용한 다형성

class Child2(AbstractClass):
    def myMethod(self):  
        print('child2에서 추상의 마법을 풀다')
        print('자유')
        
    def normalMethod(self):
        print('추상 클래스의 일반 메소드는 오버라이딩이 선택적이다')
    
    def good(self):
        print('child2 고유 메소드')
        
c2 = Child2()
c2.myMethod()
c2.normalMethod()
c2.good()

print('-------')
imsi = c1
imsi.myMethod()
print()
imsi = c2
imsi.myMethod()

child2에서 추상의 마법을 풀다
자유
추상 클래스의 일반 메소드는 오버라이딩이 선택적이다
child2 고유 메소드
-------
child1에서 추상 메소드에 내용을 적용

child2에서 추상의 마법을 풀다
자유