상세 컨텐츠

본문 제목

[Python-기초] 상속

Programming language/PYTHON

by 주초위왕 2023. 3. 2. 04:29

본문

상속

 - 자식클래스가 부모클래스로부터 코드를 물려받는 문법

 - 자식클래스는 부모클래스로부터 메소드를 물려받는다.


def Car:
  def __init__(self, name, price, color):
    self.name = name
    self.price = price
    self.color = color

  def show(self) :
    print('---차량정보---')
    print(f'차주 : {self.name}')
    print(f'가격 : {self.price}')
    print(f'색상 : {self.color}')

  def go(self):
    print('앞으로 갑니다!')  

  def engineOn(self):
    print('열쇠로 시동을 켰습니다')
c1 = Car('김주희', 100, '파란색')


Car클래스 객체가 하나 만들어지고 클래스 객체 안에 인스턴스 변수 name, price, color가 만들어진 상태에서 c1 = Car('김주희', 100, '파란색')를 실행해주니 각각 name 김주희, price 100, color 파란색 값이 들어가 있는다.

 

 

실행을 해보면 위에 만들어둔 코드와 아래 연결이 잘 되어 출력이 되는걸볼 수 있다. 이제 SuperCar() 클래스도 만들건데

Car()클래스랑 똑같이 show( ), go( ), engineOn( ) 도 필요하고 이미 위에 만들 코드들이 필요하면 복붙보다는 상속을 해서 코드를 가져오는게 더 효율적. SuperCar( )클래스는 Car( )클래스로부터 메소드들을 다 상속받았다는 의미.

 

Car( )클래스를 상속받은 SuperCar( )클래스를 생상자를 실행시키고 SuperCar( )을 불러오는데 에러가 생긴다. name, price, color에 들어갈 값이 필요하다는 뜻. (앞에 만든 클래스에 보내줄 값이 필요하니 값을 입력해 달라는 의미)

 

상속을 했으니 Car( )객체는 없어지고 SuperCar( )객체가 새로 생김. 실행해보면 잘 출력 되는걸볼 수 있다.

 

만약에 새로 만든 SuperCar( )객체에도 새로운 메소드를 또 만들고 싶다면 정의해주면 된다. 여기서 알아야 할 점은 상속받은 SuperCar( )에서 s1.openRoof( )를 추가해 주었는데 원래 있던Car( )클래스 에서는 openRoof( )가 보이지 않는다. 자식클래스는 부모를 상속하지 않는다는것.

 

 


생성자 다시보기

 

반응형

관련글 더보기

댓글 영역