Java 기초 - 6

RumbleBi·2023년 3월 6일
0

Java

목록 보기
6/6
post-thumbnail

객체간 타입 형변환

자바에서 예외적으로 Strongly typed language 가 적용되지 않는 경우가 있다.

상속관계에서 자식 클래스가 부모 클래스 타입으로 참조되는것이 허용되며 이를 up-casting 이라고 한다.

한번 부모 클래스 타입의 클래스로 참조가 이루어진 이후 다시 자식 클래스로 참조하는 것을 down-casting 이라고 한다.

up-casting은 상속관계에서 자식 객체가 부모 객체의 성향을 띄게 하는 것이고

down-casting은 up-casting이 되어있다는 전제하에 다시 원래 관계로 돌아가는 것이다.

객체간 타입 형변환 - 2

상속관계가 성립되어 있고 자식 클래스의 인스턴스가 부모 클래스 타입의 변수로 참조되면(upcasting) 실제 인스턴스화 객체가 자식 객체일 경우에도 자식 클래스가 갖고 있는 인스턴스 메소드는 호출 할 수 없다.

부모 클래스 타입의 변수로 참조하고 있는 자식 인스턴스 객체의 메소드를 호출하기 위해서는 down-casting 이 이루어져야한다.

단, 재정의 하고 있는 메소드의 경우 up-casting 상황에서도 자식 클래스의 재정의 메소드가 호출된다.

객체간 타입 형변환 - 3

상속관계에서 객체간의 타입 형변환은 객체를 관리하는데 있어 큰 이점이 있다.

자식 클래스가 부모 클래스 타입의 변수로 참조가 가능하기 때문에 같은 부모 클래스를 상속하는 모든 자식 클래스들을 하나의 타입으로 관리할 수 있다.

이로써 같은 객체의 관리는 프로그램의 복잡성을 크게 개선할 수 있다.

즉 사진과 같이 그림판 프로그램의 작동방식처럼 그림의 겹침을 구현하기 위해 따로 시퀀스라는 컬렉션을 생성하여 그림의 순서를 만들 필요 없이, Shapes의 참조변수인 4바이트짜리 공간을 여러개 생성하여 index로 접근하는 방법이 가능하다.

ex)

Shapes S = new Rectangles;
Shapes S2 = new Ellipses;
// ...

다형성

다형성(polymorphism)은 하나의 객체가 다양한 형태로 처리될 수 있는 특성을 말한다.

다형성을 구현하기 위해서는

  1. 상속
  2. 재정의 메소드(overriding)
  3. 객체간의 형변환(upcasting)의 조건이 필요하다.

다형성의 이형 집합을 통한 구현 방식과 파라미터를 통한 구현 방식으로 구분할 수 있다.

위의 코드에서 업캐스팅을 발생시키고, for 문으로 Shape[] 안의 자식 클래스들을 호출한다.

profile
기억보다는 기록하는 개발자

0개의 댓글