티스토리 뷰

Python

[파이썬] 메소드 오버라이딩

J3SUNG 2020. 9. 15. 04:07

메소드 오버라이딩이
이미 선언되어있는 메소드를 상속받은 클래스에서 재정의해서 사용하는것을 의미합니다.

위의 그림에서 메소드 오버라이딩은 부모로 부터 받은 메소드인
"짖기"를 새로 정의해서 우렁차게 짖기로 사용한 예입니다.

 

class People:
    def __init__(self, name, age, weight, run_speed):
        self.name = name
        self.age = age
        self.weight = weight
        self.run_speed = run_speed
        print("{0}이 입장하였습니다.".format(self.name))
        print("나이는 {0}, 몸무게는 {1} 입니다.".format(self.age, self.weight))
    
    def move(self):
        print("{0}이 {1}속도로 달리고있습니다.".format(self.name, self.run_speed))

class Car:
    def __init__(self, speed):
        self.speed = speed

    def drive(self):
        print("{0}이 {1}속도로 주행중입니다.".format(self.name, self.speed))

class detailPeople(People, Car):
    def __init__(self, name, age, weight, height):
        People.__init__(self, name, age, weight, "0km/h")
        Car.__init__(self, "0km/h")
        self.height = height
        self.flight_speed = "200km/h"
    
    def fly(self):
        print("{0}이 {1}속도로 비행 하고 있습니다.".format(self.name, self.flight_speed))

    def move(self):
        self.fly()

guest_3 = detailPeople("June", 20, 70, 170)
guest_3.move()


출력결과
June이 입장하였습니다.
나이는 20, 몸무게는 70 입니다.
June이 200km/h속도로 비행 하고 있습니다.

위의 예제에서 People 클래스에서 move함수를 선언했는데
People을 상속받은 detailPeople에서 move함수를 재정의해서 사용합니다.


728x90

'Python' 카테고리의 다른 글

[파이썬] 예외처리 (try, except, finally)  (0) 2020.09.15
[파이썬] pass, super  (0) 2020.09.15
[파이썬] 상속, 다중 상속  (0) 2020.09.15
[파이썬] 클래스  (0) 2020.09.15
[파이썬] with  (0) 2020.09.15
댓글
댓글쓰기 폼
공지사항