반응형

# 부모 자식간 형 변환

## 객체 형 변환 (Object Casing)

  • 상속관계에 있는 클래스들 간의 형 (Data Type)을 바꾸는 것.
  • 자동 형 변환 (UpCasting)
부모 = 자식.

Animal r = new Dog();
r = new Cat();
  • 강제 형 변환 (DownCasting)
자동 형 변환(UpCasting)이 전재되면, 강제 형 변환가능.
Animal r = new Cat();	

((Cat)c).night();

## 객체 형 변환 (실습)

public class TPC23 {
	public static void main(String[] args) {
		// 자동 형 변환 (UpCasting)
		// 방법1. Cat cat = new Cat();
		// 방법2. Object ani = new Cat();
		Animal ani = new Dog();	//방법3.
		ani.eat();	// 컴파일시점에서 Animal의 eat() / 실행시점에서는 Dog의 eat()
		
		//ani.night();	// Dog에는 없기때문에 불가능.
		((Cat)ani).night();	// 강제 형 변환 (DownCasting)		
		// 다형성 : 상위 클래스가 하위 클래스에게 동일한 메시지로 서로 다르게 동작시키는 객체지향의 원리.
	}	
}

 

# 다형성

## message polymorphism (다형성) -> 객체 지향 이론의 꽃

  • 상속 관계에 있는 클래스에서 상위 클래스가 동일한 메시지로 하위클래스들을 서로 다르게 동작시키는 객체지향 원리
상위 클래스 Animal
하위 클래스 Cat, Dog

=>
상위 클래스인 Animal 이 하위 클래스인 Cat, Dog에게 동일한 메시지(eat)를 보내면,
하위 클래스인 Cat, Dog의 eat 메서드가 서로 다르게 동작하는 것.
  • 재정의 (Override) 가 전제 되어야 다형성 이론 설명 가능.
Animal d = new Dog();
d.eat();

d = new Cat();
d.eat();
  • 강제 형 변환 (DownCasting)을 통해 하위클래스의 night 메서드에 접근 가능.
Animal ani = new Cat();
ani.night();	// 불가능.

((Cat)ani).night();
반응형

+ Recent posts