상속
- 클래스끼리 물려주거나 물려받는 것을 말한다
- 물려준 클래스(부모클래스,super)의 속성과 기능을 물려받는 클래스(자식클래스,sub)에서 사용이 가능하도록
만들고, 추가적인 표현을 통하여 새로운 클래스를 만드는 문법
- 클래스의 재사용(재활용)
- 프로그램의 유연성(추가 수정 삭제 ~ )을 증대 시키기 위해서 사용된다
- 상속시 주의 사항
1. 아무리 자식이더라도 부모의 private 멤버는 접근 불가
2. 자식클래스에서 부모클래스를 명시한다
- 형식
- class 자식클래스명(부모클래스명) :
코드정의
class Info:
count = 0
def __init__(self,name = None,age = 0) -> None:
print("부모 생성자 호출")
Info.count+=1
self.__name = name
self.set_age(age)
#self.__age = age
#setter
def set_age(self,age):
if age < 1:
print("나이를 잘못입력하셨습니다.")
self.__age = 1
return
self.__age = age
#getter
def get_age(self):
return self.__age
@property
def name(self):
return self.__name
@name.setter
def name(self,name:str):
if name.__len__() < 2:
print("이름은 두글자 이상입니다.")
return
self.__name = name
def setData(self,name,age):
self.__name = name
self.set_age(age)
def disp(self) -> None:
print("번호 : {}".format(Info.count))
print("이름 : {}".format(self.__name))
print("나이 : {}".format(self.__age))
@classmethod
def create(cls):
return Info()
# def __str__(self) -> str:
# return "이름 : {}".format(self.__name) + "\n나이 : {}".format(self.__age)
def __del__(self):
print("부모 소멸자 호출")
Info.count-=1
class NewInfo(Info):
# 자식클래스 객체가 생성될 때
# 자동으로 부모클래스의 생성자가 호출된다
# 부모클래스의 멤버변수의 값을 초기화 하려면 자식클래스에서 함께 받아주어야 한다
# 부모클래스의 멤버변수값을 초기화하기 위해 부모클래스의 생성자를 함께 호출해 주어야 한다
# super - 부모 , self - 자식
# super - 부모의 인스턴스 공간을 컨트롤하는 클래스
def __init__(self, name=None, age=0, height=0.0) -> None:
super().__init__(name, age) # 제일 위에 적는 것을 권장한다
print("자식 생성자 호출")
# self.__name = name
# self.__age = age
self.__height = height
def set_height(self,height):
self.__height = height
def get_height(self):
return self.__height
#메소드의 오버라이드
# - 메소드의 재정의
# - 코드의 일부분을 수정하려 할 때 사용되는 구문
# - 객체 상황상 맞지 않는 부분을 수정하여야 할 때 사용한다
def disp(self) -> None:
super().disp()
# print("번호 : {}".format(Info.count))
# print("이름 : {}".format(self.name))
# print("나이 : {}".format(self.get_age()))
print("키 : {}".format(self.__height))
a = NewInfo("김코딩",20,177.4)
a.disp()
print(Info.count)
'PYTHON' 카테고리의 다른 글
[PYTHON] 추상클래스 (0) | 2023.07.05 |
---|---|
[PYTHON] 바인딩과 다형성 (0) | 2023.07.05 |
[PYTHON] 클래스(소멸자) (0) | 2023.07.04 |
[PYTHON] 클래스(Class) (0) | 2023.07.03 |
[PYTHON] 디폴트 매개변수 (0) | 2023.07.03 |