[Python] 상속

형이·2023년 11월 7일

Python

목록 보기
17/34
post-thumbnail

📝 상속

🖥️ 1. 상속이란

  • 기존에 정의해둔 클래스의 기능을 그대로 물려받음
  • 기존 클래스에 기능 일부를 추가하거나 변경하여 새로운 클래스를 정의
  • 코드를 재사용할 수 있게됨
  • 상속을 받고자 하는 대상인 기존 클래스를 부모, parent, super, base 클래스 라고 부름
  • 상속 받는 새로운 클래스를 자식, child, sub 클래스라고 부름

class Animal :
  def __init__(self, name, age) :
    self.name = name
    self.age = age

  def eat(self, food) :
    print('{}은 {}를 먹습니다.'.format(self.name, food))

  def sleep(self, hour) :
    print('{}은 {}시간 동안 잡니다.'.format(self.name, hour))
    
animal = Animal("동물", 5)
animal.eat('먹이')

animal.sleep('5시간')

[결과]
동물은 먹이를 먹습니다.
동물은 5시간시간 동안 잡니다.

class Dog(Animal) : # Animal 클래스를 상속
  pass
  
Dog1 = Dog('뽀삐', 10)
Dog1.eat('사료')
Dog1.sleep(8)

[결과]
뽀삐은 사료를 먹습니다.
뽀삐은 8시간 동안 잡니다.

🖥️ 2. 메서드 오버라이딩

  • 부모 클래스의 method를 재정의
  • 자식 클래스의 인스턴스로 호출 시, 재정의된 메서드가 호출됨

class Animal :
  def __init__(self, name, age) :
    self.name = name
    self.age = age

  def eat(self, food) :
    print('{}은 {}를 먹습니다.'.format(self.name, food))

  def sleep(self, hour) :
    print('{}은 {}시간 동안 잡니다.'.format(self.name, hour))
    
class Dog(Animal) :
  def eat(self, food) : # 메서드 오버라이딩
    print('{}는 {}를 아주 맛있게 먹습니다.'.format(self.name, food))
    
animal = Animal('동물', 5)
animal.eat('먹이')
animal.sleep(5)

[결과]
동물은 먹이를 먹습니다.
동물은 5시간 동안 잡니다.


Dog1 = Dog('뽀삐',10)
Dog1.eat('사료')
Dog1.sleep(5)

[결과]
output
뽀삐는 사료를 아주 맛있게 먹습니다.
뽀삐은 5시간 동안 잡니다.

🖥️ 3. 다중상속

class Animal :
  def __init__(self, name, age) :
    self.name = name
    self.age = age

  def eat(self, food) :
    print('{}은 {}를 먹습니다.'.format(self.name, food))

  def sleep(self, hour) :
    print('{}은 {}시간 동안 잡니다.'.format(self.name, hour))
class Human :
  def __init__(self, name, age) :
    self.name = name
    self.age = age

  def study(self, hour) :
    print('{}는 {}시간 동안 공부합니다. '.format(self.name, hour))
class Kim(Animal, Human) :
  pass
  
kim = Kim('김자바', 20)
kim.eat('밥')
kim.study(4)

[결과]
김자바은 밥를 먹습니다.
김자바는 4시간 동안 공부합니다. 

0개의 댓글