[PYTHON] 상속

2023. 7. 5. 09:47·PYTHON

상속
 - 클래스끼리 물려주거나 물려받는 것을 말한다
 - 물려준 클래스(부모클래스,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
'PYTHON' 카테고리의 다른 글
  • [PYTHON] 추상클래스
  • [PYTHON] 바인딩과 다형성
  • [PYTHON] 클래스(소멸자)
  • [PYTHON] 클래스(Class)
whkim98
whkim98
꾸준히 내 것으로 만드는 게시글을 작성하자
  • whkim98
    내 일기장
    whkim98
  • 전체
    오늘
    어제
    • 분류 전체보기
      • JAVA
      • JavaScript
        • Node
        • React
      • PYTHON
      • GitHub
      • DJANGO
      • Project
        • Insty
        • ERP
      • Cloud
        • NAVER CLOUD Web DevOps
        • Public
      • 자격증
        • SQLD
        • 정보처리기사
        • ADsP
        • 리눅스마스터
        • AWS
      • 코딩테스트
        • 프로그래머스 Lv0
        • 프로그래머스 Lv1
      • Spring
      • Tools
        • Postman
        • eGov
      • WEB
      • CS
      • DevOps
  • 블로그 메뉴

    • 홈
    • GitHub
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    Cloud
    RDBMS
    Postman
    git
    해시 암호화
    javascript
    django
    코딩테스트
    코테
    코딩
    AWS
    js
    spring
    Tomcat
    정보처리기사
    web
    Java
    eGov
    CORS
    AdSP
    html
    gitbash
    annotation
    github
    프로그래머스
    node
    jsp
    SQLD
    Python
    React
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
whkim98
[PYTHON] 상속
상단으로

티스토리툴바