다형성이란?
객체지향의 3대 특징 중 하나로
하나의 참조 변수로 여러 타입의 객체를 참조할 수 있는 것
즉, 조상 클래스 타입의 참조 변수로 자손 클래스의 인스턴스를 참조할 수 있도록 하는 것이다
다형성의 효과
- 편리함
- 코드 길이 감소
- 유지 보수 용이
- 하나의 타입으로 다양한 실행 결과를 얻을 수 있다
참조 변수의 형변환
1. UpCasting (업캐스팅)
자식타입 -> 부모타입
자동형변환
ex) 자식.부모메소드();
부모 = (부모)자식객체;
2. DownCastion (다운캐스팅)
부모타입 -> 자식타입
강제 형변환
ex) ((자식)부모).자식메소드();
* 상속 구조에서만 가능
* 형변환은 참조 변수의 타입을 변환하는 것이지 인스턴스를 변환하는 것은 아니기 때문에 인스턴스에 영향을 미치지 않는다
* 단지 참조 변수의 형변환을 통해서 참조하고 있는 인스턴스에서 사용할 수 있는 멤버의 범위(개수)를 조절하는 것이다
instanceof 연산자
[표현법] 레퍼런스변수 instanceof 클래스명
- 현재 레퍼런스가 실질적으로 어떤 클래스 타입을 참조하는지 확인할 때 사용
- 연산 결과 true, false 반환
- true의 경우 해당 클래스의 타입으로 형변환이 가능하다는 의미
동적바인딩
컴파일 시에는 해당 타입의 메소드와 연결되어 있다가
프로그램 실행 시 자식 클래스의 오버라이딩된 메소드로 바인딩이 바뀌어 동작하는 것
* 성립 조건 : 상속 관계로 이루어져 다형성이 적용된 경우, 메소드 오버라이딩이 되어 있어야 함
'Study' 카테고리의 다른 글
[JAVA/자바] 예외처리 (Exception) (0) | 2022.11.23 |
---|---|
[JAVA/자바] 추상클래스 (abstract class) & 인터페이스 (interface) (0) | 2022.11.16 |
[JAVA/자바] 클래스 (class) - 필드 / 생성자 / 메소드 (0) | 2022.11.10 |
[JAVA/자바] 전역 변수 / 지역 변수 / 접근제한자 / 상수필드 (0) | 2022.11.10 |
[JAVA/자바] 상속 (Inherit) (0) | 2022.11.10 |