관리 메뉴

Frog is cry

타입 변환과 다형성 본문

JAVA/개념정리

타입 변환과 다형성

Frog is cry 2020. 7. 22. 19:46

클래스 타입 변환, 자동 타입 변환, 다형성, 강제 타입 변환, instanceof

기본타입과 마찬가지로 클래스도 타입 변환이 있다.
ex) int i = 10; /  double d = i;
ex) A a = new A(); /  B b = a;
이를 활용하면 객체 지향 프로그래밍의 다형성을 구현할 수 있다.

다형성
> 사용 방법은 동일하지만 다양한 객체 활용에 여러 실행결과가 나오도록 하는 성질
> 메소드 재정의와 타입 변환으로 구현

자동 타입 변환(promotion)
> 프로그램 실행 도중 자동으로 타입 변환 일어나는 것
> 부모타입 변수 = 자식타입; 일경우만 가능

부모 타입으로 자동 타입 변환 이후에는 부모 클래스에 선언된 필드 및 메소드만 접근 가능
예외적으로, 메소드가 자식 클래스에서 재정의될 경우 자식 클래스의 메소드가 대신 호출

parent 
메소드1
메소드2

child(parent 상속)
메소드2
메소드3

parent = child > 값 대입
parent.method1(); > 부모것을 불러옴
parent.method2(); > 자식쪽에 있는 메소드가 호출이 됨
parent.method3(); // 호출 불가

필드의 다형성
> 필드 타입을 부모 타입으로 선언할 경우
다양한 자식 객체가 저장되어 필드 사용 결과 달라질 수 있음

매개변수의 다형성
매개변수를 부모 타입으로 선언하는 효과
> 메소드 호출 시 매개값으로 부모 객체 및 모든 자식 객체를 제공할 수 있음
> 자식의 재정의된 메소드가 호출 -> 다형성

강제 타입 변환(casting)
부모 타입을 자식 타입으로 변환
> 조건 : 자식 타입이 부모 타입으로 자동 타입 변환한 후 다시 변환할때 사용

자식타입 변수 = (자식타입) 부모타입;
Parent parent = new Child(); // 자동 타입 변환
Child child = (Child)parent // 강제 타입 변환  

instanceof 연산 자
> 어떤 객체가 어느 클래스의 인스턴스인지 확인

메소드 내 강제 타입 변환 필요한 경우
> 타입 확인하지 않고 강제 타입 변환 시도 시 ClassCastException 발생할 수 있음
> instanceof 연산자 통해 확인 후 안전하게 실행
ex) boolean result = 좌항(객체) instanceof 우항(타입)


  


'JAVA > 개념정리' 카테고리의 다른 글

인터페이스  (0) 2020.07.22
추상 클래스  (0) 2020.07.22
메소드재정의(오버라이딩)  (0) 2020.07.22
상속  (0) 2020.07.22
접근권한 제어자  (0) 2020.07.20
Comments