Hola
En AS3 no existe lo q se llama "virtual".
Bueno... el public, protected y privated son modificadores de la visibilidad de las clases, de los metodos y de las variables de una clase.
- public: el elemento es visible en cualquier lado de la aplicacion
- private: solo es visible por la clase donde fue declaradoa
- protected: el elemento es visible por las clases hijas
- internal: es visible en todas las clases dentro del paquete
Por ejemplo, si definis esta clase
Código ActionScript :
package
{
public class PP
{
public var a:String = "public";
private var b:String = "private";
protected var c:String = "protected";
}
}y ahora haces lo siguiente
Código ActionScript :
var pp1:PP = new PP();
trace(pp1.a);
trace(pp1.b),
trace(pp1.c);
Vas a ver que el primer trace lo hace bien y los siguientes no... con eso ves q solo los elementos de las clases q son publicos (public) son los que podes acceder desde afuera de ella.
Hora bien.... si extendes la clase
Luego la extendes
Código ActionScript :
package
{
public class PP2 exteds PP
{
public function PP2()
{
trace(this.c);
trace(this.d);
}
}
}
.
.
.
var p:PP2 = new PP2()Vas a ver q el primer trace lo hace bien y el 2do falla, esto se debe a q una clase hija no puede "ver" a los elemenos priviadas (private) de las clases padres, sino q solo puede "ver" y "usar" a los elemenso public y protected.
Esto es en lo q respecta a variables y funciones dentro de una clase, pero no es en el unico lado en donde se pueden usar, sino q a nivel de clase estos modificadores tambien se los puede utilizar.
Como sabras siempre q declaras una clase la haces con "public" delante, esto es necesario sino no podrias utilizar la clase desde ningun lado, ya q estos modificadores actuan de la misma manera sobre las clases q sobre las variables y metodos.
Los difernetes modificadores de visibiilidad para clases son:
public: es visible en todos lados
internal: solo visible para el paquete
Luego hay 2 modificadores mas, final, q indica q esa clase no puede ser extendida y dynamic, q indica q a esa clase se le pueden crear elementos en tiempo de ejecucion, pero bueno, estos son modificadores de funcionalidad y no de visibilidad.
Es importante saber q estos modificadores no se pueden juntar, o sea, una variable no puede ser publica y privada al mismo tiempo, o sea, los modificadores son excluyentes en si mismos, o son de un tipo o del otro...
Pero aca no termina la historia, existe un modificador de variable y metodos extra, el estatico (static). Este modificar indica q se puede utilizar la variable o metodo sin necesidad de instanciar la clase, y ademas tiene la particularidad de que debe ir en conjunto con alguno de los modificadores anteriores, veamos un ejemplo
[as]class MyClase
{
static public variable:String = "jj";
}
.
.
.
trace(MyClase.variable)[/code]
Y como colorario final, te cuento q podes para las variables y los metodos crear tus propios modificadores de visibilidad por medio del uso de namespace, vas ver q el mx_internal es muy ususado dentro del framework del as3..
Bueno espero q te sirva la ayuda... cualqueir cosa chifla
bye!