매번 후배가 물어보는거, 카톡으로만 답해주기 아까워서 정리하는 컨텐츠
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가 불리자나
동작이 다르지 그래서 다형성인거야
[후배] 고게
[후배] 다형성
'프로그래밍 고찰 > 질문과 답변' 카테고리의 다른 글
[질문과 답변] 프록시 패턴이 뭐예요? / Spring 어노테이션과 Python 데코레이터 (0) | 2020.08.21 |
---|---|
[질문과 답변] 인터페이스가 뭔가요? / 추상클래스와 인터페이스차이가 뭐예요? (0) | 2020.08.21 |