본문 바로가기

프로그래밍 고찰/질문과 답변

[질문과 답변] 다형성이 뭐예요?

 매번 후배가 물어보는거, 카톡으로만 답해주기 아까워서 정리하는 컨텐츠

140% 뇌피셜 (뇌피셜 주도개발)

[후배] Parent p = new Child() 이거는 어느 경우에 하는거에요?

저게 다형성인디 ㅜ


[후배] 걍 parent면 parent로 만들고
[후배] child면  child로 만들면 안되나

예를 들어 니가 FPS 게임을 만들꺼야
캐릭터가 있고 캐릭터에 맴버변수로 Weapon이 있겠지
그리고 총은 종류가 많으니까

[후배] 그쵸


AK47: Weapon, M16:Weapon, 
이렇게 있어
Weapon을 상속받아서


[후배] Weapon w = new AK47()
[후배] 이런식으로 만드나

 Weapon에 Attack 이라는 매쏘드가있고
 각 Ak47, M16 은 Attack 을 구현 해서 각각 다르게 동작하겠지
 근데 다형성이 없으면
 니가 AK47도 들고, M16도 들고 하면서 바꿔가면서 쓰게할라면
 캐릭터에 맴버변수로 AK47 M16둘다 들고있어야 됨
 무기 100개면 맴버변수로 100개 들고있어야댐 ㅜ

[후배] 그 머냐 오버라이딩된 함수
[후배] 호출할때 불리는 기준이 인스턴스에요
[후배] 참조변수 타입이에요 인스턴스?


 동적 바인딩 하면 인스턴스에 따라 불림
그게 OOP 에서 다형성인거임
그래서 Weapon w = new AK / weapon w2 = new M16 하면
 w랑 w2랑 둘다 weapon이지
 근데 Attack 하면 불리는 함수는 각각 AK 랑 M16의 Attack가 불리자나
 동작이 다르지 그래서 다형성인거야


[후배] 고게
[후배] 다형성

728x90