Object Oriented - OOP Polymorphism

 이제 OOP의 마지막인 Polymorphism에 대해서 알아보겠습니다. 저번에 Class를 이용하여 객체를 만들었습니다. 하지만 각각의 객체가 같은 틀을 사용할수 있지만 상황에 따라서 다르게 사용하는 경우도 있습니다. 이때 Polymorphism의 특성을 사용합니다.



 위 사진은 Book Class을 나타내는 사진 입니다. 위 사진은 위 링크에서 내용을 확인 할수 있습니다. 



 이제는 Book Class에서 양식을 받아서 Alex Class로 만듭니다. 하지만 cost를 변경하고 Function을 변경하였습니다. 


 일단 먼저 Class bookInfor를 생성합니다. 이는 나중에 Class Alex에서 bookInfor의 양식을 받아오기 위해 미리 생성해야 합니다.


 이제 Class Alex을 생성하는데 첫줄에 'extends'단어가 있습니다. 이는 오른쪽에 있는 bookInfor class의 양식을 Alex에서도 계승한다는 코드입니다.


 순서도를 보면 Class Alex는 2번 bookInfor에서 양식을 받는것을 알수 있습니다. 

constructor(명칭 변경가능)
 여기서 'super' 키워드가 있는데 이는 constructor의 구조를 파라메트 만큼 갖고와서 사용한다는 뜻입니다. 즉 여기서는 cost만 존재하지 않으니 그것을 제외한 모든 this코드를 갖고오는 것입니다.

register(명칭 변경가능)
 register는 bookInfor에서 계승을 받지만 Alex에서 변경을 하였습니다. 이렇게 계승을 받지만 중간에 변경을 하면 변경된 register로 실행하게 됩니다.


하지만 만약 Class Alex에 constructor 부분이 통째로 없다해도 동작이 가능할까요?

가능합니다.



 
다만 constructor를 지우면 cost까지 파라메터로 입력을 할수 있습니다. 
이렇듯 부모 Class에 계승을 받지만 자식 Class에서 그대로 받아 쓰거나 수정 혹은 추가를 할수 있습니다. 추가는 새로운 기능을 작성해서 할수 있습니다. 






댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2

Lesson 12_2 참조를 이용한 프로퍼티노드(Property Node)