다형성(Polymorphism) : 같은 자료형에 여러 가지 객체를 대입하여 다양한 결과를 얻어내는 성질을 의미한다.
즉 한타입의 참조변수로 여러타입의 객체를 참조할 수 있도록 한다.
부모클래스로 자식클래스 참조 가능
자식클래스로 부모클래스 참조 불가능
참조변수는 참조할뿐 실체 객체는 Dog 이다.
하지만 참조변수가 Animal을 가리키기때문에 Animal의 메소드만 사용가능하다.
아니면 위와같이 클래스형변환(다운캐스팅) 해서 Dog의 메소드를 사용가능하다.
반대로 Animal의 참조변수로 Dog객체를 가리키는것은 업캐스팅 이라고하는데, 아래는 다형성의 사용예시이다.
Object 클래스는 모든 클래스들의 조상이다. 따라서 Object 를 통해 하위클래스들의 메서드를 사용할수있는 것을 보여준다.