Java 5

John Jun·2023년 4월 7일
0

객체간 형변환

  • Strongly typed language: 미리 정의된 데이터의 타입을 사용하고, 타입이 변하지 않는다. C+와 자바가 이에 해당된다.

  • Loosely typed language: 데이터 타입과 무관하게 다양한 타입을 정의할 수 있다. JS가 대표적으로 이에 해당된다.

up-casting & downcasting

자바에서 에외적으로 Strongly typed language가 적용되지 않는 경우이다.
상속 관계에서 자식 클래스가 부모클래스 타입으로 참조되는 것이 허용되며 이를 up-casting 이라 한다. 반대로, 한번 부모 클래스 타입의 클래스로 참조가 이루어진 이후 다시 자식 클래스로 참조하는 것을 down-casting이라 한다. 단, 부모 클래스를 자식클래스로 참조할 수 는 없다.

  • 상속 관계가 성립되어 있고 자식 클래스의 인스턴스가 부모 클래스 타입의 변수로 참조 되면 실제 인스턴스화 객체가 자식 객체일 경우에도 자식 클래스가 같고 있는 인스턴스 메소드는 호출할 수 없다.
  • 부모 클래스 타입의 변수로 참조하고 있는 자식 인스턴스 객체의 메소드를 호출하기 위해서는 down-casting이 이루어져야 한다.
  • 단, 자식 클래스가 재정의(overriding)하고 있는 메소드의 경우 up-casting 상황에서도 자식 클래스의 재정의 메소드를 호출 할 수 있다.

polymorphism

  • 다형성(polymorphism)은 하나의 객체가 다양한 형태로 처리될 수 있는 특성이다.
  • 다형성을 구현하기 위해서는 상속, 재정의 메소드, 그리고 객체간의 형변환 세가지 조건이 필요하다.
  • 두가지 구현 방식이 있다.

1.다형성의 이형 집합을 통한 구현

2. 파라미터를 통한 구현

profile
I'm a musician who wants to be a developer.

0개의 댓글