-
상속과 다형성 with pyhton코테/그 외 2022. 4. 18. 11:39728x90
상속
- 하나의 클래스가 다른 클래스의 속성과 메서드를 얻는 과정을 말하며 새롭게 형성된 클래스는 자녀 클래스, 자녀 클래스가 파생된 클래스 를 부모 클래스라고 부른다.
다형성
- 부모 class에서 상속받은 같은 이름의 method를 overriding하여 기능을 확장하거나 변경하는 것을 의미
- overriding: super클래스를 상속받은 서브클래스에서 super클래스의 메소드를 같은 이름, 같은 반환값, 같은 인자로 메소드 내의 로직을 새롭게 정의하는 것
class Point: def __init__(self): self.x = int(input('x=?')) self.y = int(input('y=?')) def disp(self): pass class Circle(Point): def __init(self): super().__init__() self.r = int(input('r=?')) def disp(self): print('원', self.x, self.y, self.r) class Rect(Point): def __init__(self): super().__init__() self.w = int(input('w=?')) self.h = int(input('h=?')) def disp(self): print('사각형', self.x, self.y ,self.w, self.h) def main(): li = list() while True: s = input('도형종류(1.사각형 2.원 3.조회 3.종료)?') if s=='1': li.append(Rect()) elif s== '2': li.append(Circle()) elif s == '3': for i in li: i.disp() elif s== '4': break else: print('잘못 입력 하셨습니다.') print('프로그램을 종료합니다.') main()
class Fruit: def __init__(self, name, market): self.name = name self.market = market def disp(self): pass def sound(self): pass class Apple(Fruit): price = '1300' def __init(self, name, market): super().__init__(name, market) def disp(self): print("이름: "+self.name) print("가격: " +self.price) print("시장: " +self.market) self.quantity() def quantity(self): print("100개 남았습니다.") class Banana(Fruit): price = '1300' def __init(self, name, market): super().__init__(name, market) def disp(self): print("이름: "+self.name) print("가격: " +self.price) print("시장: " +self.market) self.quantity() def quantity(self): print("80개 남았습니다.") class Orange(Fruit): price = '1300' def __init(self, name, market): super().__init__(name, market) def disp(self): print("이름: "+self.name) print("가격: " +self.price) print("시장: " +self.market) self.quantity() def quantity(self): print("60개 남았습니다.") f1 = Apple('사과', '1번 시장') f2 = Banana('바나나', '2번 시장') f3 = Orange('오렌지', '3번 시장') f1.disp() f2.disp() f3.disp() f1 = Fruit('사과', Apple()) f2 = Fruit('바나나', Banana()) f3 = Fruit('오렌지', Orange()) f1.disp() f2.disp() f3.disp()
728x90