Language/기초문법
[Python] 오버라이딩, 추상클래스
Sh-YE
2024. 5. 20. 15:07
오버라이딩
: 하위 클래스에서 상위 클래스의 메서드를 재정의(override)
ex. 상위 클래스의 넓이 ->
하위클래스에서 넓이 + ㎠ 로 재정의
class TriangleArea:
def __init__(self, w, h):
self.width = w
self.height = h
def printTriangleAreaInfo(self):
print(f'width: {self.width}')
print(f'height : {self.height}')
def getArea(self):
return self.width * self.height / 2
class NewTriangleArea(TriangleArea):
def __init__(self, w, h):
super().__init__(w, h)
# 오버라이딩
def getArea(self):
return str(super().getArea()) + '㎠'
ta = NewTriangleArea(7, 5)
ta.printTriangleAreaInfo()
triangleArea = ta.getArea()
print(f'triangleArea : {triangleArea}')
추상클래스
: 상위클래스에서 하위클래스에 메서드 구현을 강요한다.
사용이유? 공통적인 기능을 사용하는데 각자에 맞게 알아서 사용하기 위함.

from abc import ABCMeta
from abc import abstractmethod
class AirPlane(metaclass=ABCMeta):
@abstractmethod
def flight(self):
pass
def forward(self):
print('전진!')
def flight(self):
print('후진!')
class Airliner(Airplane):
def __init__(self, c):
self.color = c
al = Airliner('red')
위와 같이 flight를 구현하지 않으면 에러가 난다.
아래 코드와 같이 flight 구현
from abc import ABCMeta
from abc import abstractmethod
class AirPlane(metaclass=ABCMeta):
@abstractmethod
def flight(self):
pass
def forward(self):
print('전진!')
def flight(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()