Clases – Herencia

Conceptos Básicos

El mecanismo de herencia permite definir nuevas clases partiendo de otras ya existentes. Las clases derivadas heredan automáticamente todo su comportamiento es decir: variables y métodos, y además permite introducir características propias que la diferencian.

La declaración de herencia, se lleva a cabo a través de la palabra reservada extends utilizada en la definición de la clase

  public class Automovil extends Vehiculo {  … }

Utilizando la nomenclatura de orientación a objetos, una clase derivada de otra se denomina subclase, mientras que la clase de la cual procede recibe el nombre de superclase.

Cuando se crea una nueva clase en Java, se puede especificar el nivel de acceso que se quiere para las variables de instancia y los métodos definidos en la clase:

public

Cualquier clase desde cualquier lugar puede acceder a las variables y métodos de instancia públicos.

  public void CualquieraPuedeAcceder(){}

protected

Sólo las subclases de la clase y nadie más puede acceder a las variables y métodos de instancia protegidos.

 protected void SoloSubClases(){}

private

Las variables y métodos de instancia privados sólo pueden ser accedidos desde dentro de la clase. No son accesibles desde las subclases.

private String NumeroDelCarnetDeIdentidad;

friendly (sin declaración específica)

Por defecto, si no se especifica el control de acceso, las variables y métodos de instancia se declaran friendly (amigas), lo que significa que son accesibles por todos los objetos dentro del mismo paquete, pero no por los externos al paquete.

Es lo mismo que protected

  void MetodoDeMiPaquete(){}

Los métodos protegidos (protected) pueden ser vistos por las clases derivadas, como en C++, y también, en Java, por los paquetes (packages). Todas las clases de un paquete pueden ver los métodos protegidos de ese paquete.

Para evitarlo, se deben declarar como private protected, lo que hace que ya funcione como en C++ en donde sólo se puede acceder a las variables y métodos protegidos de las clases derivadas.

Relación entre objetos de una superclase y objetos de subclases 

Un objeto de una subclase puede ser tratado como objeto de su superclase correspondiente. Lo contrario no se cumple.

Esto hace posible utilizar un array de objetos de la superclase y almacenaren él objetos de cualquier subclase, tratándolos de una forma común.

Constructores de Subclases

Cuando se crea un objeto de una subclase, es recomendable invocar al constructor de la superclase, para que se encargue de cualquier inicialización de las variables

Para ello, es necesario incluir en el constructor de la subclase una llamada al de la superclase mediante la referencia super.

  public class Vehiculo { 

  private int nRuedas;

  Vehiculo (int nR) {

       nRuedas = nR;

  }

  } 

  public class Automovil extends Vehiculo {  

  private int cilindrada;

  public Automovil (int numRuedasint cil) {

       super (numRuedas);

       cilindrada = cil;

   }

  }

Print Friendly, PDF & Email
The owner of this website has made a committment to accessibility and inclusion, please report any problems that you encounter using the contact form on this website. This site uses the WP ADA Compliance Check plugin to enhance accessibility.