새소식

데이터분석/둘째주

파이썬 Python : 추상클래스

  • -
728x90

 

추상클래스

상위 클래스에서 하위 클래스에 메서드 구현을 강요한다.

상위 클래스가 추상 클래스이면, 상속받은 하위 클래스에서 선언만 된 메서드를 꼭 구현하도록 강요한다.
(구현하지 않으면 에러가 발생한다.)

구현되지 않은 메소드를 가지고 있다고해서, 추상클래스라고 한다.

 

   AirPlane   
  flight()      선언만
    ▲                             
    │ 상속                      │ 
    │                               │메서드 구체화
    │                               

    │                               

   Airliner                       │
                                     
flight()      구현
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 비행~!')

 

728x90
#추상클래스를 선언하기위한 모듈 호출
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 비행~!
전진~
후진~

 

 추상클래스를 만들어 쓰는 이유     

  • 클래스의 특정 기능을 상속을 받았을때, 상속받은 클래스들 마다 상황에 맞게 고쳐쓸 수 있게 한다.

 

 

[실습]

계산기 추상클래스를 만들고, 이를 이용해서 새로운 계산기 클래스를 만들어보자.
추상 클래스에는 덧셈, 뺄셈, 곱셈, 나눗셈 기능이 선언되어 있어야 한다.

 

 

 

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.