[자바 – Java] 다형성 구현 이유 형변환 instanceof

1. 다형성 (polymorphism)이란?

 

1) 하나의 코드가 여러 자료형으로 구현되어 실행되는 것이다.

2) 같은 코드에서 여러 실행 결과가 나온다.

3) 정보은닉, 상속과 더불어 OOP의 가장 큰 특징 중 하나이다.

4) 다형성을 잘 활용하면 유연하고 확장성 있고, 유지보수가 편리한 프로그램을 만들 수 있다.

2. 다형성을 사용하는 이유(=장점)

 

1) 상속과 메서드 재정의를 활용하여 확장성 있는 프로그램을 만들 수 있다.

2) 다형성이 적용이 되지 않는 경우엔 if, else if문이 구현되고 코드의 유지 보수가 어려워진다.

3) 상위 클래스에서는 공통적인 부분을 제공하고 하위 클래스에서는 각 클래스에 맞는 기능을 구현한다.

4) 여러 클래스를 하나의 타입(상위 클래스)으로 핸들링할 수 있다.

 

3. 다형성으로 인한 형변환(캐스팅; casting)

 

1) 형변환의 전제 조건 — 상속 관계에 있는 것만 객체 타입 변환이 가능.

2) Up-Casting (업 캐스팅) : 자식타입에서 부모 타입으로 형 변환, 형 변환 생략 가능, 묵시적 형 변환 => Side effect : 조작할 수 있는 멤버 변수가 줄어든다.

3) Down-Casting (다운 캐스팅) : 업캐스팅된 클래스를 다시 원래의 타입으로 형 변환하는 것이다.

– 하위 클래스로의 형변환은 명시적으로 해야 한다.

 

Customer customerX = new VIPCustomer();     //묵시적 : 업캐스팅
VIPCustomer vcustomerX = (VIPCustomer)customerX;     //명시적 : 다운캐스팅

4. instanceof 연산자

 

– 원래 인스턴스의 형(Type)이 맞는지 여부를 체크하는 키워드이다.

– 맞으면 true, 아니면 false를 반환한다.