객체 지향 프로그래밍의 대표적인 특징으로는 캡슐화, 상속, 다형성이 있다. 그 중에서 다형성은 객체 지향 프로그랭의 꽃이라 불린다.
다형성(Polymorphism)은 이름 그대로 다양한 형태
, 여러 형태
를 뜻한다.
프로그래밍에서 다형성은 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 뜻한다. 보통 하나의 객체는 하나의 타입으로 고정되어 있다. 그런데 다형성을 사용하면 하나의 객체가 다른 타입으로 사용될 수 있다는 뜻이다.
부모와 자식이 있고, 각각 다른 메서드를 가진다.
System.out.println("Parent -> Child");
Parent poly = new Child();
poly.parentMethod();
Parent poly = new Child()
Child
인스턴스를 만들었다. 이 경우 자식 타입인 Child
를 생성했기 때문에 메모리 상에 Child
와 Parent
가 모두 생성된다.Parent
타입의 변수인 poly
에 담아둔다.Parent poly
는 부모 타입이다. new Child()
를 통해 생성된 결과는 Child
타입이다. 자바에서 부모 타입은 자식 타입을 담을 수 있다.Child child = new Parent()
: 컴파일 오류 발생