Accediendo Miembros de una Superclase



Descargar 18,36 Kb.
Fecha de conversión24.03.2017
Tamaño18,36 Kb.
PROTECTED

Los niveles de control de acceso protected y por defecto son en mayoría idénticos, pero con una diferencia crítica. Un miembro default puede ser accedido solo si la clase que accede al miembro pertenece al mismo paquete, mientras que un miembro protected puede ser accedido (a través de la herencia) por una subclase incluso si la subclase está en un paquete diferente.



1

2

3



4

5

6



package certification;

 

public class Parent {



    protected int x = 9; //acceso protected

}








El código anterior declara la variable x como protected. Esto hace a la variable ser accesible por las otras clases que estén dentro de su mismo paquete (certification), al igual que a todas aquellas subclases que por herencia heredan de la clase Parent fuera del paquete. Ahora vamos a intentar crear una subclase en un paquete diferente, y vamos a hacer el intento de usar la variable x (que la subclase ha heredado):

Accediendo Miembros de una Superclase

Si su método sobrepasa uno de sus métodos de superclase, usted puede invocar al método sobrepasado a través del uso de la palabra clave super. Puede también usar super para referirse a un campo escondido (aunque esconder campos no se recomienda). Considere esta clase, Superclass:

public class Superclass {

public void printMethod() {

System.out.println("Impreso enn Superclass.");

}

}



En una aplicación posiblemente nos encontremos con algún valor que permanece constante durante la ejecución. Podemos definirla como una variable común pero perderíamos el control. Por allí, en algún descuido, se cambiaría de valor pero no nos enteraríamos. Podemos agregar a la definición de la variable el modificador final, que indica que a esa variable solo se le puede asignar un valor u objeto una única vez. La sintaxis es la siguiente:

final tipo_variable nombre_de_variable = valor;

Por ejemplo :



final int unaConstante = 10;

Si tratamos de modificar el valor de una variable con el modificador final, el compilador indicará un error. Una vez definido el valor no se puede modificar.

Realmente, lo que permanece constante es la asignación de un objeto a esa variable, no los atributos internos que pueda tener ese objeto. Por ejemplo, en el siguiente caso:

final Ciudadano juan = new Ciudadano();

habríamos creado al ciudadano 'juan' y ya nunca más se le podrá asignar a 'juan' otra instancia de Ciudadano. Sin embargo, es posible cambiar los datos internos de ese ciudadano:

juan.setApellido("Pérez");

el objeto 'juan' ha cambiado internamente.

Con el modificador final evitaremos lo siguiente:

Ciudadano pepe = new Ciudadano();

juan = pepe;

La última línea no compilaría pues 'juan' fue declarado con final, así que no se le puede asignar nada nuevo.



abstract (palabra clave).

Una clase abstracta es aquella que posee al menos un método abstracto. Un método abstracto es aquél que está declarado, pero que no posee implementación alguna (es decir no tiene cuerpo). Está incompleto. Debido a esta carencia, es imposible declarar objetos de una clase abstracta. ¿Para qué sirve entonces una clase abstracta? Una clase abstracta sirve para establecer un marco de trabajo que deben cumplir todas las clases que hereden de ella. Las clases que heredan de ella sí deben dotar de una implementación a los métodos abstractos del padre. Si no lo hacen, automáticamente se convierten también en abstractas. También es posible definir una clase abstracta sin que posea métodos abstractos. 


Las clases y métodos abstractos llevan la palabra clave abstract. Es importante que tengas en cuenta que no pueden llevar el modificador abstract:


los constructores

los métodos estáticos

los métodos privados

Ejemplo 1.


La clase abstracta Mascota declara un método abstracto hablar que deberá ser redefinido por las subclases Gato, Perro y Pato. Observa que la clase Mascota solo se está utilizando para declarar el método hablar, de modo que las clases hijas la puedan usar.

/**


* Abstract class Mascota - Representa una mascota

*/

public abstract class Mascota



{

/**


* Método abstracto hablar para las mascotas

*/

abstract public void hablar();



} //fin de la clase Mascota


La base de datos está protegida por derechos de autor ©absta.info 2016
enviar mensaje

    Página principal