본문 바로가기
PYTHON

[PYTHON] 바인딩과 다형성

by kwh_coding 2023. 7. 5.
#바인딩 - 실제 호출될 함수를 연결하는 것
#정적바인딩 - 호출할 함수를 변수의 타입으로 결정하는 것
#동적바인딩 - 호출할 함수를 인스턴스 공간의 타입으로 결정하는 것


# 다형성
#  - 다양한 형태나 성질
#  - 하나의 객체를 여러 개의 클래스로 표현하는 것을 말한다
#  - 상속이 기본
#  - 클래스를 기능별로 분리하여 통합적인 처리를 하기 위해서 사용된다
#  - 업캐스팅을 바탕으로 이루어진다
#   - 부모의 참조형변수안에 자식클래스의 인스턴스 공간의 정보가 저장되는 형태
  

class Animal:
    
    def __init__(self,name) -> None:
        self.name = name

    def bark(self):
        print("????????")

    def disp(self):
        print("이름 : {}".format(self.name))


class Cat(Animal):
    def __init__(self, name) -> None:
        super().__init__(name)

    def bark(self):
        print("야옹")

    def eat(self):
        print("생선")

class Dog(Animal):
    def __init__(self, name) -> None:
        super().__init__(name)

    def bark(self):
        print("멍멍")

    def eat(self):
        print("뼈다구")


import random

a = None

su = random.randint(0,1)

if su == 0:
    a = Dog("개")
elif su == 1:
    a = Cat("고양이")


a.disp() # - 부모클래스의 고유한기능
a.bark() # - 오버라이드메소드는 자식클래스 우선
a.eat() # - 다른 프로그래밍언어에서는 원래 사용불가

'PYTHON' 카테고리의 다른 글

[PYTHON] 구글코랩(colaboratory)  (0) 2023.10.12
[PYTHON] 추상클래스  (0) 2023.07.05
[PYTHON] 상속  (0) 2023.07.05
[PYTHON] 클래스(소멸자)  (0) 2023.07.04
[PYTHON] 클래스(Class)  (0) 2023.07.03