상위 클래스에서 하위 클래스에 메서드 구현을 강요한다.
상위 클래스에서 생성된 메서드가 선언만 된 상태에서 하위 클래스에서 해당 메서드를 구체화해준다.
하지만, 진짜 추상 클래스의 유용한 기능은 상위 클래스에서 선언만 해 준 메서드를 서로 다른 하위 클래스에서 입맞에 맞게 변경할 수 있다는데 있다.
from abc import ABCMeta
from abc import abstractmethod
class AirPlane(metaclass=ABCMeta):
@abstractmethod
def flight(self):
pass # 구현되지 않은 메소드
def forward(self):
print('전진!')
def backward(self):
print('후진!')
class Airliner(AirPlane):
def __init__(self,c):
self.color = c
def flight(self):
print('시속 400km/h 비행!')
al = Airliner('red')
al.flight()
al.forward()
al.backward()
Python
복사
# 계산기 추상 클래스 -> 새로운 계산기 클래스를 생성하기
# 덧셈 , 뺄셈, 곱셈, 나눗셈 기능이 있어야 함
from abc import ABCMeta
from abc import abstractmethod
class Calculator(metaclass=ABCMeta):
@abstractmethod
def add(self,n1,n2):
pass
def sub(self,n1,n2):
pass
def mul(self,n1,n2):
pass
def div(self,n1,n2):
pass
class Newcalculator(Calculator):
def add(self,n1,n2):
return n1 + n2
def sub(self,n1,n2):
return n1 - n2
def mul(self,n1,n2):
return n1 * n2
def div(self,n1,n2):
return n1 / n2
value = Newcalculator()
print(value.add(10,20))
print(value.sub(10,20))
print(value.mul(10,20))
print(value.div(10,20))
Python
복사