Comunidad de diseño web y desarrollo en internet online

Que es 'public virtual funtion'???

Citar            
MensajeEscrito el 23 Feb 2009 05:56 pm
Hola. Tengo una duda de una clase en AS3 que hace poco me encontré.

algunas funciones están definidas como public function etc, pero hay algunas que empiezan como
'public virtual function' etc..

que es virtual??
Estaría bien un repaso rapido de que es tambien protected, internal y demás jeje. Quisiera saber en qué afecta que una función sea virtual o no, las demás declaraciones mas o menos me las sé.

Gracias

Por leoncitoamx

Claber

206 de clabLevel

2 tutoriales

 

Puebla, México

firefox
Citar            
MensajeEscrito el 23 Feb 2009 08:25 pm
¿Public virtual function? No sabía que ese operador existía, pero todos los días se puede aprender algo nuevo. ¿Donde lo viste?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Feb 2009 10:27 pm
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!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 10 Ago 2009 01:29 pm
Que mas muchachos, la parte de clases virtuales aplica a .NET, es una propiedad que permite que los metodos que hereden del metodo base definido como virtual, lo puedan modificar. Es decir, si hay un metodo como

public virtual double Area()
{
return x * y;
}


el metodo que lo hereda podria ser algo como

public override double Area()
{
return PI * x * x;
}

en el segundo es el mismo metodo Area, pero heredado y modificado para que permita retornar otro valor.

Por gara501

2 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.