[ CnUnix ] in KIDS 글 쓴 이(By): arche (기마토끼) 날 짜 (Date): 1994년02월14일(월) 05시02분51초 KST 제 목(Title): polymorphism 음냐. 저도 초보인디. 수업 시간에 울 선생님은 자나깨나 'polymorphism'을 강조하셔설랑 저는 그게 무지무지 중요한 걸로 알았걸랑요. 이해는 잘 못하고 중요하게만 여기고 있어요. 제가 들은 폴리모피즘은 virtual function과만 (주로?) 관계가 있읍니다. zeo님 글 중의 정의에 나오는 'same interface'라는 말이 중요한 것이지요. base class에서 virtual 아무개... 하고 선언해 놓으면 derived class가 d1, d2, ...여러 개 있다고 할 때 base class name을 b라고 하면 b *a[10]; a[0] = new d1(...); ... a[9] = new d9(...); for (int i=0; i< 10; i++) a[i]->아무개(...); 라는 코드가 무리없이 돌아간다. 즉 d1...d9가 다 다른 타입이지만 base가 같으므로 각각 자기가 가지고 있는 아무개를 실행시킨단 말입니다. 해당 class에 아무개가 없으면 b::아무개가 실행되고요. 이렇게 해 놓으면 나중에 derived class들이 어떻게 바뀌건 main code에는 별로 영향이 없어서 information hiding, 즉 object-oriented programming이 가능해 지는 거지요. virtual function이 선언되지 않으면 compile error가 나게 됩니다. SMALLTALK에서는 virtual function이 default로 되어 있다는군요. 음.. 이것보단 기능들이 많을텐데 이거밖에 몰라요. |