2009-07-01 9 views
2

Actionscript에서 하위 클래스로 캐스팅

ActionScript에서 다음 클래스가 있습니다.

public class A { 
} 

public class B extends A { 
} 

및 이러한 변수 (다른 클래스에 있음) :

public var InstanceOfA:A; 
public var InstanceOfB:B; 

A의 인스턴스를 클래스 B로 캐스팅하려면 어떻게해야합니까?

시도 :

InstanceOfB에 대한 형식 A의 개체를 가져옵니다.

나는 또한 시도했다 :

instanceOfB = B(InstanceOfA); 

이 경우, 나는 '형식 강요 실패'오류가 발생합니다.

답변

7

은 더 덜 구체적에서 캐스트 할 수 있습니다. B는 확장 때문에, 이론적으로, 클래스 A가 포함되지 것보다 구체적인 코드를 포함한다. 이 때문에 (B는 A가 있기 때문에) A와 B를 캐스팅하는 것이 가능하지만 A는 B를하지 않기 때문에 당신은 B 같이 캐스팅 할 수 없습니다

아마 더 논리적 인 방법으로 그것을 넣으려면 , 클래스 A는 "Animal"이고 클래스 B는 "Dog"입니다. Dog는 Animal을보다 구체적으로 구현 한 것입니다. 당신이 동물로 개를 캐스팅 할 수 있지만 모든 동물이 개이기 때문에 당신이 동물을하고 개로 캐스팅 할 수 있도록

개는 동물이다.

희망이 있습니다.

위와 같은 작업을 수행하려는 경우 A와 B 모두 추상 기본 클래스를 확장하거나 인터페이스를 구현하고 두 인스턴스 변수를 추상 클래스 또는 인터페이스로 입력 할 수 있습니다 .

3

알렉스 Jillard의 대답에 추가 : 그것은 instanceofA의 값이 이미 유형 B의 경우 B를 입력 유형 A의 변수를 캐스팅하는 것이 가능하다.

그래서 당신이있는 경우

var instanceOfA:A = new B(); 

다음이 작동합니다 : 이벤트를 처리 할 때이 온다

instanceOfB = instanceOfA as B; 

. MouseEventcurrentTarget 속성은 유형 Object으로 선언하지만, 런타임에이 Sprite 또는 MovieClip 될 가능성이 높습니다.

관련 문제