Kim Hyeong
09 다형성 본문
다형성
상속과도 깊은 관계가 있는 것
여러가지 형태를 가질수 있는 것
즉,하나의 메서드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것 (ex 오버로딩, 오버라이딩)
하나의 참조변수로 여러 타입의 객체를 참조할 수 있는 것
즉, 조상타입의 참조변수로 자손타입의 객체를 다룰 수 있는 것이 다형성
( 인터페이스에서 사용 => implements로 상속이 되었어도 인터페이스가 부모가 되어 자식의 멤버를 참조할 수 있다.)
조상타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있지만 반대로 자손타입의 참조변수로 조상타입의 인스턴스를 참조할 수는 없다.
(ex
super sp = new Child();
부모타입으로 자식의 인스턴스를 생성했을 경우 자식이 가지고 있는 고유한 맴버는 접근을 할수 없다.
메소드는 오버라이딩이 되면 접근이 가능 하다. 우선적으로 접근
Child ch1 = new super();
이 경우에는 참조 가체가 불가 자식타입의 참조변수 = new 부모인스턴스 생성 (성립 x)
자식은 부모보다 맴버가 많기 때문에 불가능 하다. )
참조변수의 형변환
서로 상속관계에 있는 경우에만 타입간의 형변환만 가능하다
자손 타잉ㅂ에서 조상타입으로 형변환 하는 경우, 형변환 생략가능.
자손타입 -> 부모타입(UpCasting) : Casting 연산자 () 생략 가능
부모타입 -> 자손타입(DownCasting) : Casting 연산자 () 생략 불가
참조변수의 형변환은 참조변수의 타입을 변환하는것 이다.
*인스턴스를 변환하는 것이 아니기 때문에 인스턴스에 영향을 주는 것은 아니다.
참조변수의 형변환은 참조하고 있는 인스턴스에서 사용가능한 멤버의 개수를 조절하는 것이다.
instanceOf 연산자
참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보는 연산자
연산 결과로 boolean 값(참 거짓)을 return한다.
여러 종류의 객체를 하나의 배열로 다룰 수 있다.
ex) AA aa[] = new AA[2];
aa[0] = new BB();
aa[1] = new CC();
'java 공부' 카테고리의 다른 글
11 object Class (0) | 2018.08.10 |
---|---|
10 예외처리 (0) | 2018.08.10 |
08 interface (0) | 2018.08.10 |
07 final 지정자(modifier) (0) | 2018.08.10 |
06 abstract class (추상 클래스) (0) | 2018.08.10 |