Pet pet = new Cat(firstChild);
System.out.println("pet이 고양이로 정의될 때 : " + pet.getHowling());
pet = new Dog(secondChild);
System.out.println("pet이 강아지로 정의될 때 : " + pet.getHowling());
Pet interface 는 Cat Class 와 Dog Class 의 사용 방법을 정의한 것이므로 Cat 객체와 Dog 객체의 교환성을 높여주며 이는 다형성의 핵심이다. 같은 pet interface 를 따르며 호출되었지만, 어떤 동물 개체를 넣느냐에 따라서 결과가 달라지기 때문이다.
// 남자인 아빠와 여자인 엄마, 그리고 낯선 남자를 생성하였다.
Person father = new Man("김", "철수", 20);
Person mother = new Woman("박영희", 26);
Person stranger = new Man("홍", "길동", 300);
또 Person abstract class 의 경우, 부모 클래스로의 타입 변환 또한 허용한다. 바로 위 코드에서 왼 편은 Person 이지만 오른 편에서는 Man 과 Woman Class 가 둘다 허용된다는 점이 바로 그 점이다. 같은 타입으로 정의되더라도 실행 결과는 다른 객체를 이용하는 성질이 바로 다형성이다.
public class Family {
private Woman mother;
private Man father;
private ArrayList<Person> children;
private ArrayList<Pet> pets;