들어가며
먼저, 우린 객체란 무엇인지 알 필요가 있습니다. "객체", 현실 세계에서는 말 그래도 존재하는 것 하나하나를 일컫는 말이지요. 그리고 현실 세계에서는 이러한 수 많은 객체들이 상호작용을 하며 세상을 만들고 살아갑니다. 이는 프로그래밍 세계에서도 사뭇 비슷합니다. 개발자는 코드를 통해 객체를 생성할 수 있고 생성된 수 많은 객체들이 상호작용을 통해 하나의 프로그램을 만들어내죠.
다형성이란?
"Java의 객체는 다형성(Polymorphism, 多形性)이라는 성질을 가지고 있다." Java 도서에서 자주 보이는 문구입니다. 그리고 구체적인 설명이 없어서 개인적으로 제가 처음 자바 공부를 시작하면서 많이 애를 먹은 부분이기도 합니다. 다형성은 어원을 그대로 해석하자면 하나의 객체는 다양한 형태를 가질 수 있다는 성질을 의미합니다.
"아니, 도대체 하나의 객체가 어떤식으로 다양하게 존재한다는 거지? 애초에 이게 말이 되는건가?"하며 머리를 붙잡았던 기억이 납니다. 뮤지컬로 비유해보겠습니다.
웃는 남자
저는 개인적으로 뮤지컬을 좋아해서 봤던 공연을 또 보곤 합니다. 그 중에서도 "웃는 남자"라는 작품을 수차례 본 적이 있습니다.("그 눈을 떠"라는 노래로 유명해진 작품입니다.) 라이브라는 뮤지컬의 특성상 몇 년을 주기로 새로 공연을 하는데, 그때마다 주인공 역이 계속 바뀝니다. (웃는 남자의 경우, 박효신, 규현, 수호, 이석훈님 등이 주인공 역을 맡았습니다.) 개개인마다 큰 차이는 있겠지만, 가장 큰 특징은 주인공이 변경되어도 관람에 있어서는 큰 문제가 되지 않는 것입니다. 각 배우는 자신만의 개성과 스타일을 가지고 있지만, 공연을 통해 전달해야 하는 메시지나 감정은 동일하기 때문이죠. 따라서, 다른 배우가 주인공 역할로 투입되더라도 문제 없이 공연을 진행할 수 있을 겁니다. 유연하다라는 엄청난 장점을 지닌 것입니다.
그래서 다형성이 왜 중요한데?
이는 프로그램 내에서도 동일합니다. 객체 지향 프로그래밍에서는 이러한 다형성을 통해서 같은 메서드나 클래스가 다양한 상황에서 다르게 동작할 수 있습니다. 즉, 동일한 메서드 이름을 가진 메서드가 서로 다른 클래스에서 다르게 구현될 수 있다는 것이죠. 이 역시 유연하다라는 장점을 통해 프로그램을 더 쉽게 확장 가능하게 만들 수 있습니다. 실무적으로 보자면, 서비스가 클라이언트에게 영향을 주지 않고 새로운 기능을 제공할 수 있다는 것입니다. (엄청나지 않습니까?) 따라서, 객체 지향 프로그래밍에서는 다형성을 잘 활용하여 유연하고 확장 가능한 코드를 작성하는 것이 중요합니다.
읽어주셔서 감사합니다.
잘못된 부분은 따끔하게 지적해주시면 감사하겠습니다.
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 4월 9일 오후 1:10
원론적으로 개념을 설명하면 딱딱하고 이해하기 어려운 주제를 뮤지컬에 대입해서 설명한 부분이 좋다고 생각합니다
@안희수 좋은 말씀 감사합니다 ! 좋은 하루 보내세요