2012-03-06 2 views
0

"superClass"를 서브 클래스 화하고 그 중 하나를 재정의하려고합니다.swf에서로드 된 클래스를 서브 클래스 화하는 방법

public class superClass { 
    protected function f1(...) : Boolean {...} 
    protected function f2(...) : Boolean {...} 
    ... 
    protected function f100(...) : Boolean {...} 
} 
public class subClass extends superClass { 
    // override f1 in the subclass 
    protected override function f1(...) : Boolean {...} 
} 

문제는 "superClass"가 swf에서로드된다는 것입니다. 내 프로젝트의 클래스 정의에 대한 참조가 없습니다. 아래처럼 할 수있는 방법이 있습니까?

public class subClass { 
    private var superClassObject: Object; 

    // construct from an instance of superClass 
    public function subClass (s : Object) { 
     superClassObject = s; 
    } 

    private function myF1(...) : Boolean {...} 

    override InvokeFunction (fname: string, args: Array) : Object { 
     if (fname == "f1") { 
      return myF1(args); 
     } else { 
      return superClassObject.InvokeFunction(fname, args); 
     } 
    } 
} 

AS에서 함수 호출을 구현하는 방법을 잘 모르겠습니다. "InvokeFunction"은 무엇이되어야합니까?

+0

클래스 정의를 참조하여 컴파일 할 때 하위 클래스로 만들어야합니다. 그렇지 않으면 컴파일러에게 아무 것도 서브 클래 싱하지 말 것을 요구하는 것입니다 .... 당신의 질문은 이해가되지 않습니다. –

+0

하위 클래스의 생성자에서 'super()'키워드 사용 –

답변

0

.swf가 아니라 .swc를 사용해야합니다. 확장하려는 클래스는 런타임이 아닌 컴파일 타임에 사용할 수 있어야합니다. 어쨌든 swf를 사용하는 것이 필수적이라면 다른 기술을 사용하여 기능을 '오버라이드'할 수 있습니다. 상속 외에 클래스의 기능을 변경하기위한 다른 OOP 개념 (Composition, Aggregation 등) 및 디자인 패턴 (Proxy,Adapter 등)이 있습니다. 당신은 그들을 사용할 수 있습니다.

관련 문제