# 상속이란
# 클래스들의 공통된 속성과 메서드를 뽑아내서 부모 클래스를 만든다.
# 이를 자식 클래스에서 상속받아 사용한다.

# 코드의 중복을 제거할 수 있다.
# 유지보수가 편리해진다.

class Item:
    """
    속성 : 이름
    메서드 : 줍기, 버리기
    """
    def __init__(self, name):
        self.name = name
    
    def pick(self):
        print(f"[{self.name}]을(를) 주웠습니다.")

    def discard(self):
        print(f"[{self.name}]을(를) 버렸습니다.")


class Weapon(Item):
    """
    속성 : 공격력
    메서드 : 공격하기
    """

    def __init__(self, name, demage):
        super().__init__(name)
        # super은 부모 클래스를 호출
        # .__init__ 생성자 호출
        self.demage = demage

    def attack(self):
        print(f"[{self.name}]을(를) 이용해 {self.demage}로 공격합니다.")


class HealingItem(Item):
    """
    속성 : 회복량
    메서드 : 사용하기
    """
    def __init__(self, name, recovery_amount):
        super().__init__(name)
        self.recovery_amount = recovery_amount

    def use(self):
        print(f"[{self.name}]을(를) 사용합니다. {self.recovery_amount} 회복")


m16 = Weapon("m16", 110)
bond = HealingItem("붕대", 20)

m16.attack()
bond.use()


from abc import *

# 추상클래스
# abstract method
# 상속받는 자식 클래스에서 추상 메서드를 강제한다.

class Item(metaclass = ABCMeta):
    # from abc import *
    # metaclass = ABCMeta
    # @abstractmethod
    """
    속성 : 이름
    메서드 : 줍기, 버리기
    """
    def __init__(self, name):
        self.name = name
    
    def pick(self):
        print(f"[{self.name}]을(를) 주웠습니다.")

    def discard(self):
        print(f"[{self.name}]을(를) 버렸습니다.")

    @abstractmethod
    def use(self):
        pass


class Weapon(Item):
    """
    속성 : 공격력
    메서드 : 공격하기
    """

    def __init__(self, name, demage):
        super().__init__(name)
        # super은 부모 클래스를 호출
        # .__init__ 생성자 호출
        self.demage = demage

    def use(self):
        print(f"[{self.name}]을(를) 이용해 {self.demage}로 공격합니다.")


class HealingItem(Item):
    """
    속성 : 회복량
    메서드 : 사용하기
    """
    def __init__(self, name, recovery_amount):
        super().__init__(name)
        self.recovery_amount = recovery_amount

    def use(self):
        print(f"[{self.name}]을(를) 사용합니다. {self.recovery_amount} 회복")


m16 = Weapon("m16", 110)
bond = HealingItem("붕대", 20)

m16.use()
bond.use()

 

 

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

 

BELATED ARTICLES

more