2012-09-05 4 views
0

하위 패키지의 클래스에서 기본 패키지의 클래스에 액세스하려고하면 오류 메시지가 표시됩니다. 어느 누구도이 문제를 해결할 수 있습니까?하위 패키지에서 기본 패키지의 클래스에 액세스하는 방법 Flash AS3.0의 클래스

FYI, 내 패키지 구조는 A -> B입니다. 기본 패키지로 'A'를, 하위 패키지로 'B'를 의미합니다.

미리 감사드립니다.

+0

답변을 드릴 수 없습니다. 그래서 Flash Builder는 기본 패키지에 클래스를 만들 때 경고를 표시합니다. – cleong

답변

0

클래스 A의 개체를 만들고 해당 개체에서 클래스 인스턴스 메서드를 호출하기 만하면됩니다. 일반적으로하지 패키지 내부

package main 
{ 
    class B extends A 
    { 
     // Code here... 
    } 
} 

갖는 코드가 수행에 영향을

var classAObj:A = new A(); 
classObj.MethodA(); 
+0

시간 내 주셔서 감사합니다. 죄송합니다. 제 문제를 설명하는 데 잘못되었습니다. 이제 나는 그것을 분명히 편집했다. 당신이 나를 도울 수 있는지보십시오. – sureshunivers

0

나는 코드에서 다음과 같이 보일 것이다 클래스 A를 확장하는 클래스 B를 위해 무엇을 당신이 찾고있는 생각 기능성, 더 조직적인 도구입니다. 합니다 (internal 키워드 제외.)

+0

시간 내 주셔서 감사합니다. 죄송합니다. 제 문제를 설명하는 데 잘못되었습니다. 이제 나는 그것을 분명히 편집했다. 당신이 나를 도울 수 있는지보십시오. – sureshunivers

0

개인 에 대해, 공공을 보호하는 방법? 나는 다른 답변에서 어떤 설명도 볼 수 없으므로 여기에있다.

class A 
{ 
    private var _password:String; 
    public var username:String; 
    protected var serverURL:String; 

    public function login():void 
    { 
     // some code 
     callServerForLogin(); 
    } 

    protected function callServerForLogin():void 
    { 
     // some code 
    } 
} 

class B extends A 
{ 
     public function B() 
     { 
      var parentPassword = super._password; 
      // FAILS because private and accessible only inside class A 

      var parentUsername = super.username 
      // all ok in here, public property 

      var parentServerURL = super.serverURL; 
      // all ok, because it is protected 

      // also we can call super.login(); or super.callServerForLogin(); 

     } 

     // IMPORTANT we are also allowed to override public and protected functions 
     override public function login():void 
     { 
      super.login(); 
      // we call the parent function to prevent loosing functionality; 

      Alert.show("Login called from class B"); 
     } 

     override protected function callServerForLogin():void 
     { 
      super.callServerForLogin(); 
      // keep also parent logic 

      Alert.show("calling protected method from B"); 
     } 
} 


// ---- Now considering you declare an object of type B you can do the following 
var bObj:B = new B(); 

// access public properties and call public functions from both B and A 
bObj.username = "superhero"; 
bObj.login(); 

// will get compile error for next lines 
bObj.serverURL = "host.port"; 
bObj.callServerForLogin(); 
+0

시간 내 주셔서 감사합니다. 죄송합니다. 제 문제를 설명하는 데 잘못되었습니다. 이제 나는 그것을 분명히 편집했다. 당신이 나를 도울 수 있는지보십시오. – sureshunivers

+0

안녕하세요, 아직도 이해가 잘 모르겠습니다. 어쩌면 몇 가지 코드를 게시 할 수 있습니까? –

관련 문제