2011-04-20 3 views
0

나는재정의 기능을 만들 때 인수/매개 변수와 일치해야합니까?

public static function createPopUp(parent:DisplayObject, 
            className:Class, 
            modal:Boolean = false, 
            childList:String = null, 
            moduleFactory:IFlexModuleFactory = null):IFlexDisplayObject 
{ 
    return impl.createPopUp(parent, className, modal, childList, moduleFactory); 
} 

의 구현에 무언가를 추가하려면 내 함수 선언의 모든 인수를 넣어해야하거나 암시 적으로 그들을 데리러 않습니다합니까?

답변

2

예 - ActionScript는 오버라이드 만 오버로드하는 메서드를 지원하지 않습니다.이 경우 메서드의 서명이 재정의 된 메서드의 서명과 정확하게 일치해야합니다.

하지만 ActionScript에서는 불가능한 정적 메서드를 재정의하려고합니다. 코드 스 니펫에서 상속받지 않는 클래스를 만들려면 정적 createPopUp 메소드를 안에 넣고 장식하려는 클래스에서 정적 createPopUp 메소드를 호출하고 원래 클래스 대신 정적 class 메소드를 호출하십시오.

정적 메서드를 상속 (또는 상속)하는 것이 불가능한 것은 정적을 가능한 한 많이 사용하지 못하게해야하는 이유 중 하나입니다. 정적은 OO 언어의 상속 능력을 제거합니다.

+0

이제는 내가 엮은 것이있다 ... 그것은 내가 그것을 오버라이드시키는 것을 허용하지 않는다. 상속 받고있는 클래스와 똑같은 이름이지만 함수가 오버라이드 기능이 아니라고 말한다. 에서. 이 사실은 PopUpManager가 아마도 싱글 톤 (singleton)이라는 사실과 관련이 있습니까? – Damon

+0

ActionScript에서 싱글 톤을 상속받지 못하게 할 수는 없으므로 생성자를 비공개로 설정할 수 없습니다. 즉, 외부의 보이지 않는 클래스를 private 클래스를 사용하여 생성자에 대한 매개 변수로 상속 된 클래스를 만들지 못하게 할 수 있습니다. 그러나 잠깐 - 이것은 정적 인 방법입니다! ActionScript에서 정적 메서드를 재정의 할 수 없습니다! 나는 대답을 편집 할 것이다 ... –

관련 문제