[Python] 5. 상속과 다형성

2021. 10. 26. 21:04Python/구조 공부하기

728x90
반응형
상속 : 부모 클래스의 모든 멤버(함수 혹은 변수)를 자식 클래스에게 물려줄 수 있는 것
- 자식 클래스는 물려받은 멤버 이외에 추가 기능 구현!

다형성(override) :  상속 받은 메소드의 내용을 재정의하기
- 부모 클래스와 같은 메소드지만 자식 클래스에서 내용을 변경하는 것
class Person:
	def __init__(self, name, phoneNumber):
    	self.name = name
        self.phoneNumber = phoneNumber
    def printInfo(self):
    	print("Name : {0}, Phone Number : {1}".format(self.name, self.phoneNumber)
        
class Student(Person): # Person : 부모 클래스, Student : 자식 클래스
	def __init(slef, name, phoneNumber, subject, studentID):
    	Person.__init__(self, name, phoneNumber) # 부모 클래스의 생성자를 호출하여 멤버변수 초기화
        self.subject = subject
        slef.studentID = studentID
    def printInfo(self): # 부모 클래스의 메소드지만, 자식 클래스에서 재정의(override)함
    	print("Name : {0}, Phone Number : {1}".format(self.name, self.phoneNumber)
        print("Subject : {0}, Student ID : {1}".format(self.subject, self.studentID)
        
if __name__ == "__main__":
    histoPerson = Person("이순신", "010-1111-2222")
    manStudent = Student("공돌이", "010-1111-2222", "공학과", "1234567")
    print(histoPerson.__dict__)
    print(manStudent.__dict__)
    # __dict__호출되면 dictionary로 호출되어, key와 value를 묶어서 확인 가능(예약어임)
    
    histoPerson.printInfo() # name과 phoneNumber까지 출력됨
    manStudent.printInfo() # name과 phoneNumber에 추가로 subject와 studentID도 같이 출력됨