안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해줍니다.
다형성을 위해 부모 클래스로 타입 변환을 허용 => 부모 타입에 모든 자식 객체가 대입될 수 있다.
이 것을 이용하면 객체는 부품화가 가능합니다.
자동차를 설계할 때 타이어 클래스 타입을 적용했다면 이 클래스를 상속한 실제 타이어들은 어떤 것이든 상관없이 장착(대입)이 가능합니다.
ex)
public class Car {
Tire t1 = new HankookTire(); -|
| => 자식 타입 객체 대입
Tire t2 = new KumhoTire();----|
---
타이어 타입 필드
}
타입 변환
데이터 타입을 다른 데이터 타입으로 변환하는 행위를 말합니다. 기본 타입의 변환에 대해서는 이미 포스팅 했었죠?
보러가기 => http://blog.naver.com/rain483/220569088792
클래스 타입도 마찬가지로 타입 변환이 있습니다. 클래스의 변환은 상속 관계에 있는 클래스 사이에서 발생합니다. 위 코드에서도 한국 타이어와 금호 타이어가 Tire를 상속했기 때문에 Tire 변수에 대입할 수 있는 것입니다.
자동 타입 변환 ( Promotion)
프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것.
자동 타입 변환은 아래와 같은 조건에서 일어납니다.
부모 클래스 변수 = new 자식클래스타입;
↑_____________________| 자동 타입 변환
class Animal { class Dog extends Animal {
..... .......
} }
두 클래스가 있다고 할 때 Dog 클래스는 Animal 클래스를 상속하므로
Dog 클래스의 dog 객체를 Animal 변수에 대입할 수 있습니다.
Dog dog = new Dog();
Animal animal = dog;
또는 Animal animal = new Dog();
위 코드에서 animal 과 dog 변수는 타입만 다를 뿐 동일한 Dog 객체를 참조합니다.
animal 변수가 Animal 타입이므로 당연히 부모인 Animal객체를 참조한다고 생각할 수 있지만, 그렇지 않습니다. dog == animal 을 연산해보면 true 가 나오는데 참조 변수의 == 연산은 참조 주소값이 같을 경우 ture를 산출하므로 두 변수가 동일한 객체를 참조하고 있다는 뜻입니다.
위 그림 같이 상속을 한다고 할 때
B b = new B();
C c = new C();
D d = new D();
E e = new E();
A a1 = b; 가능
A a2 = c; 가능
A a3 = d; 가능
A a4 = e; 가능
'자바' 카테고리의 다른 글
JAVA 자바 하나의 배열로 객체 관리 (0) | 2017.03.12 |
---|---|
JAVA 자바 타입 변환과 다형성 필드의 다형성 (0) | 2017.03.12 |
JAVA 자바 protected 접근 제한자 (0) | 2017.03.12 |
JAVA 자바 final 클래스와 final 메서드 (0) | 2017.03.12 |
JAVA 자바 메서드 재정의 - 부모 메서드 호출(super) (0) | 2017.03.12 |