추상클래스
상위 클래스에서 하위 클래스에 메서드 구현을 강요한다.
상위 클래스가 추상 클래스이면, 상속받은 하위 클래스에서 선언만 된 메서드를 꼭 구현하도록 강요한다.
(구현하지 않으면 에러가 발생한다.)
구현되지 않은 메소드를 가지고 있다고해서, 추상클래스라고 한다.
AirPlane
flight() 선언만
▲ │ │ 상속 │ │ │메서드 구체화 │ │ │ │ Airliner │
|
from abc import ABCMeta from abc import abstractmethod
class AirPlane(metaclass=ABCMeta):
@ abstractmethod def flight(self): pass
메서드 구체화
class Airliner(Airplane):
def flight(self): print('시속 400km/h 비행~!') |
#추상클래스를 선언하기위한 모듈 호출
from abc import ABCMeta
from abc import abstractmethod
class AirPlane(metaclass=ABCMeta): #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): #구현, 구현하지 않으면 TypeError 발생
print('시속 400km/h 비행~!')
class fighterPlane(Airplane):
def __init__(self, c):
self.color = c
def flight(self): #구현, 구현하지 않으면 TypeError 발생
print('시속 700km/h 비행~!')
myAl = Airliner('red')
myAl.flight()
myAl.forward()
myAl.backward()
myFl = fighterPlane('blue')
myFl.flight()
myFl.forward()
myFl.backward()
-- 출력 -- |
시속 400km/h 비행~! 전진~ 후진~ 시속 700km/h 비행~! 전진~ 후진~ |
추상클래스를 만들어 쓰는 이유
- 클래스의 특정 기능을 상속을 받았을때, 상속받은 클래스들 마다 상황에 맞게 고쳐쓸 수 있게 한다.
[실습]
계산기 추상클래스를 만들고, 이를 이용해서 새로운 계산기 클래스를 만들어보자.
추상 클래스에는 덧셈, 뺄셈, 곱셈, 나눗셈 기능이 선언되어 있어야 한다.