Руководство по actionscript. часть 3, стр. 018
Package { import flash. display.*;
public class Caller extends Sprite { private var shelteredObject:ShelteredClass;
public function Caller ( ) { shelteredObject = new ShelteredClass( );
}
}
}
Чтобы вызвать метод secretMethod ( ) класса ShelteredClass, объект Caller должен сначала получить ссылку на пространство имен restricted. Для этого объект Caller передает себя в метод getRestrictedNamespace ( ) и присваивает результат (либо пространство имен restricted, либо значение null) переменной key для дальнейшего использования.
var key:Namespace = shelteredObject. getRestrictedNamespace(this);
Далее, перед тем как вызвать метод secretMethod ( ), объект Caller проверяет, ссылается ли переменная key на допустимое пространство имен. Если это так, объект Caller использует переменную key в качестве пространства имен для вызова метода secureMethod ( ):
if (key!= null) { shelteredObject. key::secureMethod( );
}
Для удобства метод с именем callSecretMethod ( ) нашего класса Caller включает код, который вызывает метод secretMethod ( ):
public function callSecretMethod ( ):void { var key:Namespace = shelteredObject. getRestrictedNamespace(this); if (key!= null) { shelteredObject. key:: secretMethod( );
}
}
Листинг 17.6 демонстрирует весь код рассматриваемого класса Caller, включая метод callSecretMethod ( ) и другой удобный метод displaySecret ( ), который обращается к переменной secretData с ограниченным доступом, используя тот же основной принцип.