2013-11-21 7 views
0

다른 클래스에 대해 동일한 속성을 제공 할 수 있습니까?다른 클래스의 동일한 속성

예를 들어 Sprite와 MovieClip을 확장하는 두 클래스는 모두 OasicObj 속성을 갖습니다.

어떻게 든 가능합니까?

.

public class BasicObj 
    { 
     public var _id:uint; 
     public var _type:String; 
     public function SetType(type:String):void { 
      _type = type; 
     } 
    } 

public class ObjOne extends Sprite implements BasicObj 
    { 
     public function ObjOne():void { 
      super(); 
     } 
    } 

public class ObjTwo extends MovieClip implements BasicObj 
    { 
     public function ObjTwo():void { 
      super(); 
     } 
    } 

답변

0

당신이

public interface BasicObj 
{ 

    function set type(value:String):void; 
    function get type():String 
} 

public class ObjOne extends Sprite implements BasicObj 
{ 
    public function ObjOne():void { 
     super(); 
    } 

    private var _type:String; 

    public function set type(value:String):void { 
     this._type = value; 
    } 


    public function get type():String { 
     return this._type; 
    } 

} 

public class ObjTwo extends Sprite implements BasicObj 
{ 
    public function ObjTwo():void { 
     super(); 
    } 

    private var _type:String; 

    public function set type(value:String):void { 
     this._type = value; 
    } 


    public function get type():String { 
     return this._type; 
    } 

} 
1

당신은 인터페이스에 대해 이야기하고 있습니다. BasicObj를 인터페이스로 설정하십시오 (자체 .as 파일에 넣고 'class'를 'interface'로 대체하십시오). 인터페이스에는 함수 정의 만 포함됩니다. 즉, 함수 이름과 해당 매개 변수 시그니처. 함수는 인터페이스를 구현하는 모든 클래스에서 구현됩니다.
인터페이스는 AS3에서 다중 상속을 구현하는 방법입니다. 또한 엄격하게 캡슐화를 시행합니다.

+0

인터페이스를 사용한 코드는 예입니다. 주요 질문은 "Sprite와 MovieClip을 확장하는 두 개의 클래스이며 모두 OasicObj 속성을가집니다." – user3017844

+0

Sprite를 확장하는 클래스와 MovieClip을 확장하는 다른 클래스를 가질 수 있으며 비슷한 (또는 같은) 속성을 가질 수 있지만 꽤 복잡한 코드를 작성해야 할 수도 있습니다. 속성과 메서드를 상호 교환 할 수있는 것처럼 사용하려면 확장 된 Sprite 또는 확장 된 MovieClip 중 어떤 유형인지 확인하기 위해 많은 조건문을 작성해야합니다. BasicObj 인터페이스를 구현하는 것이 훨씬 낫다. 객체는 또한 '유형'BasicObj가 될 것이므로 그렇게 인스턴스화 할 수 있습니다. – moosefetcher

1

아무것도 같은 인터페이스를 구현 할 수있다하는 것은 서브 클래스에 특정 유형의 속성을 선언에서 당신을 방지 할 수 있습니다.

public class A extends MovieClip { 
    public var bo:BasicObj; 
    public function A() { 
     super(); 
    } 
} 
public class B extends Sprite { 
    public var bo:BasicObj; 
    public function B() { 
     super(); 
    } 
} 

그런 다음 이러한 속성을 정상적으로 참조하십시오.

var a:A=new A(); 
a.bo=new BasicObj(); 
a.bo.SetType("A"); 
+0

이것은 가장 간단한 방법입니다. 감사합니다.) – user3017844

관련 문제