사용 목적이 유사한 클래스들의 사용 방법을 통일하여 서로 호환되도록 만드는 것
- 공통 부모 클래스를 상속(extends) 받거나, 공통 인터페이스를 구현(implements) 해야 한다.
- 공통된 method 가 있어야 한다. (Override - 메소드 재정의)
- 부모 타입의 변수를 사용하여 메소드를 호춣해야 한다.
- 메소드 명이 일치해야 한다.
- 파라미터의 수와 타입이 일치해야 한다.
- 파라미터 변수 이름은 일치하지 않아도 된다.
- 리턴 타입이 일치해야 한다.
- 자식 메소드의 리턴 타입이 부모 메소드의 리턴 타입의 자식클래스여도 된다.
ChileOne obj1 = new ChildOne();
ChildTwo obj2 = new ChildTwo();
Parent p = obj1;
p.method1(); // 다형성 호출, ChildOne의 method1 호출
p = obj2;
p.method2(); // 다형성 호출, ChildTwo의 method2 호출
obj1.method1(); // 다형성 호출이 아니다.
obj2.method2(); // 다형성 호출이 아니다.