2.16 MODIFICADORES DE ACCESO

 

Vamos a ver los diferentes modificadores de acceso.




Para explicar los modificadores de acceso vamos a crearnos un paquete en Eclipse al que vamos a llamar paquetePruebas.

Vamos a crearnos tres clases Clase1 en el paquete poo y sin el método main, una Clase2 en el paquete poo con el método main y una tercera clase Clase3 sin el método main y en el paquete paquetePruebas.

En la Clase1 vamos a declarar dos variables y un método:

package poo;

 

public class Clase1 {

     

       int mivar=5;

     

       int mivar2=7;

     

       String miMetodo() {

           

             return "El valor de mivar2 es: "+mivar2;

       }

 

}

Si nos fijamos no hemos puesto ningún modificador de acceso delante de las variables ni del método. Esto significa que tienen el método por defecto.

En la Clase2 vamos a crear una instancia de la Clase1:

package poo;

 

public class Clase2 {

 

       public static void main(String[] args) {

           

             Clase1 myobj=new Clase1();

 

       }

 

}

Si ahora llamamos a las variables y método de la Clase1 lo podemos hacer porque el modificador por defecto sí que permite el acceso desde la propia clase y desde el propio paquete:



Si ahora en la Clase1 declaramos la variable mivar como private ya no tendremos acceso desde la Clase2.

Ahora en la Clase3 vamos a hacer que herede de la Clase1 pero también al estar en diferentes paquetes tendremos que importar también el paquete.

package paquetePruebas;

 

import poo.Clase1;

 

public class Clase3 extends Clase1{

 

}

Volvemos a la Clase2 y creamos una instancia de la Clase3:

package poo;

 

public class Clase2 {

 

       public static void main(String[] args) {

           

             Clase1 myobj=new Clase1();

           

             Clase3 myobj2=new Clase3();

 

       }

 

}

Nos da un error al crear la instancia de la Clase3 porque pertenece a un paquete diferente para ello hay que importar el paquete paquetePruebas:

import paquetePruebas.Clase3;

Si ahora llamamos a las variables y métodos desde la Clase3 no nos aparece las variables ni el método de la Clase1:



Esto es porque en la Clase1 se está utilizando el método por defecto y no es accesible desde otra subclase. Si declaramos la variable mivar como protected:

protected int mivar=5;

Ahora sí que nos aparece esta variable:



El modificador protected sí que es accesible desde otra subclase.









No hay comentarios:

Publicar un comentario