다형성은 객체 지향 프로그래밍에서 한 객체가 여러 가지 타입을 가질 수 있는 특성을 의미한다. 이는 부모 클래스 타입의 참조 변수로 자식 클래스의 인스턴스를 참조할 수 있음을 의미한다.
다형성을 구현하기 위해서는 부모 클래스와 이를 상속받는 자식 클래스가 필요하다. 자식 클래스는 부모 클래스의 모든 멤버를 상속받으며, 이를 통해 같은 부모 클래스 타입의 참조 변수로 여러 종류의 자식 클래스 객체를 참조할 수 있다.
class Person {}
class Student extends Person {}
Person p1 = new Student(); // 다형성 구현
위의 예제에서 Person 클래스를 상속받는 Student 클래스가 있다. 이때 Person 클래스 타입의 변수 p1이 Student 클래스의 인스턴스를 참조할 수 있다.
자바에서는 instanceof 연산자를 사용하여 객체가 특정 클래스의 인스턴스인지 여부를 확인할 수 있다.
class Person {}
class Student extends Person {}
Person p1 = new Student();
System.out.println(p1 instanceof Person); // true
위의 예제에서는 p1이 Person 클래스의 인스턴스인지를 확인하고 있다. 결과는 true로 반환된다.