자바를 사용하다보면 여러가지 개념들을 마주하게 된다.
객체지향, 캡슐화, 상속,,,, 등등 요즘에는 캡상추다라는 단어도 있다. 캡슐화, 상속, 추상화, 다형성을 줄인 단어라고 한다.
자바에는 정말 많은 개념들이 존재한다.
그렇지만 누군가 나에게 "자바의 특징이 뭐라고 생각하시나요?라고 물어본다면 나는 "다형성"이라고 말할 거 같다.
다형성이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다.
하지만 반대도 성립한다. 즉, 하나의 타입에 여러 가지 겍체를 담을 수 있다.
정리하지면 다음과 같다.
1. 하나의 타입에 여러 가지 겍체를 담을 수 있다.
2. 하나의 객체를 여러 가지 타입에 담을 수 있다.
코드로 보는 게 가장 이해하기 쉽다. 일단 다음과 같은 가정을 한다
class Phone{}
class Galaxy extends Phone{}
class Iphone extends Phone{}
1번이 말이 되는 이유는 다음과 같은 코드를 보면된다.
Phone phone1 = new Iphone();
Phone phone2 = new Galaxy();
Phone이라는 하나의 타입에 Iphone, Galaxy를 담을 수 있다. 즉 , 하나의 타입에 여러가지 객체를 담을 수있다.
2번이 말이 되는 이유는 다음과 같은 코드를 보면된다.
Phone phone = new Galaxy();
Galaxy phone = new Galaxy();
Galaxy라는 하나의 객체를 Phone, Galaxy타입에 담을 수 있다. 즉, 하나의 객체를 여러 가지 타입에 담을 수 있다.
즉, 다형성을 위해선 우리가 자바의 특징이라고 흔히 부르는 캡상추다(캡슐화, 상속, 추상화, 다형성)가 필요하기 때문에 나는 자바의 특징을 "다형성"이라고 생각한다.
자바의 특징은 다형성이며, 객체지향의 이점을 가장 잘 표현한 단어라고 생각한다. 위에서 봤던 예시는 간단해서 별 거 없을 수도 있다. 하지만 다형성을 제대로 활용한다면 정말 많은 일들을 할 수 있다. 이건 다음 포스팅에,,