본문 바로가기

Python/객체지향 프로그래밍

(Python) 객체지향 프로그래밍 - 클래스 상속 (1)

728x90

 

클래스 상속(Inheritance)이란?

클래스의 상속은 기존 클래스에 있는 필드와 메서드를 그대로 물려받는 새로운 클래스를 만드는 것이다. 

상속받은 후에는 새로운 클래스에서 필드나 메서드를 추가해 이용할 수 있다.

 

부모 클래스, 조상 클래스 - 서브 클래스, 자식 클래스, 자손 클래스

 

부모 클래스는 모든 자식 클래스에게 영향을 주지만, 자식 클래스는 부모 클래스에게 영향을 주지 못한다.

 

 

class 자식 클래스(부모 클래스):

def ~~

def ~~

 

 

메서드 오버라이딩(Overriding)

 

 "수정"

상의 클래스의 메서드를 서브 클래스에서 재정의하는 것

부모 클래스의 메서드를 자식 클래스의 용도에 맞게 바꾸는 개념

단, 메서드의 선언부는 반드시 동일하고, 구현부만 다르게 한다!

 

 

조상 클래스의 Private은 자손 클래스로 상속되지 않고, 자신의 클래스에서만 사용 가능하다


super() 메서드

 

서브 클래스에서 메서드 오버라이딩을 할때, 부모 클래스의 메서드나 속성을 이용하게 될 경우 해당 메서드를 활용한다.

 

 

 

다소 복잡하지만, 이런식으로 클래스를 만들고 super() 메서드를 이용하면 된다.

 

 
# 조상클래스
class Car:

    def __init__(self):
        self.door = 0
        self.speed = 0

    def upSpeed(self,speed):
        self.speed += speed
        print("현재 속도(조상클래스) : %d" % self.speed)
        print("문의 개수(조상클래스) : %d" % self.door)


# 자손클래스
class Sedan(Car):
    def __init__(self,speed,door):
        # 조상클래스의 생성자를 호출하는 부분이다. 되도록 이와 같은 생성자를 작성해주자.
        # 이때, 조상클래스의 생성자를 자손클래스 생성자 구현부의 첫줄에 적길 권장한다!!
        super().__init__()
        self.speed = speed
        self.door = door

    def downSpeed(self,speed):
        self.speed -= speed
        print("현재 속도(자손클래스) : %d" % self.speed)

if __name__ =="__main__":
    car = Car()
    car.upSpeed(3)

    sedan = Sedan(100,4)
    sedan.upSpeed(50)
    sedan.downSpeed(50)