Strongly typed language: 미리 정의된 데이터의 타입을 사용하고, 타입이 변하지 않는다. C+와 자바가 이에 해당된다.
Loosely typed language: 데이터 타입과 무관하게 다양한 타입을 정의할 수 있다. JS가 대표적으로 이에 해당된다.
up-casting & downcasting
자바에서 에외적으로 Strongly typed language가 적용되지 않는 경우이다.
상속 관계에서 자식 클래스가 부모클래스 타입으로 참조되는 것이 허용되며 이를 up-casting 이라 한다. 반대로, 한번 부모 클래스 타입의 클래스로 참조가 이루어진 이후 다시 자식 클래스로 참조하는 것을 down-casting이라 한다. 단, 부모 클래스를 자식클래스로 참조할 수 는 없다.
polymorphism
1.다형성의 이형 집합을 통한 구현
2. 파라미터를 통한 구현