#바인딩 - 실제 호출될 함수를 연결하는 것
#정적바인딩 - 호출할 함수를 변수의 타입으로 결정하는 것
#동적바인딩 - 호출할 함수를 인스턴스 공간의 타입으로 결정하는 것
# 다형성
# - 다양한 형태나 성질
# - 하나의 객체를 여러 개의 클래스로 표현하는 것을 말한다
# - 상속이 기본
# - 클래스를 기능별로 분리하여 통합적인 처리를 하기 위해서 사용된다
# - 업캐스팅을 바탕으로 이루어진다
# - 부모의 참조형변수안에 자식클래스의 인스턴스 공간의 정보가 저장되는 형태
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() # - 다른 프로그래밍언어에서는 원래 사용불가