User Guide
Inheritance 133
You can use the following example to see how each of the access control specifiers affects
inheritance across package boundaries. The following code defines a main application class
named AccessControl and two other classes named Base and Extender. The Base class is in a
package named foo and the Extender class, which is a subclass of the Base class, is in a package
named bar. The AccessControl class imports only the Extender class and creates an instance of
Extender that attempts to access a variable named
str that is defined in the Base class. The
str variable is declared as public so that the code compiles and runs as shown in the
following excerpt:
// Base.as in a folder named foo
package foo
{
public class Base
{
public var str:String = "hello"; // change public on this line
}
}
// Extender.as in a folder named bar
package bar
{
import foo.Base;
public class Extender extends Base
{
public function getString():String {
return str;
}
}
}
// main application class in file named ProtectedExample.as
import flash.display.MovieClip;
import bar.Extender;
public class AccessControl extends MovieClip
{
public function AccessControl()
{
var myExt:Extender = new Extender();
trace (myExt.testString); // error if str is not public
trace (myExt.getString()); // error if str is private or internal
}
}
}