Tutorial Java Básico Herencia


La herencia se encuentra en todos lados en Java, utilizando esta característica de la Programación Orientada a Objetos podemos transmitir atributos y métodos de una clase a otra.

¿Cómo utilizar herencia en Java?

En Java no existe la multi herencia, de tal modo que solo es posible heredar de una sola clase, para hacerlo se debe hacer lo siguiente :

class ClassName extends ParentClass{}

Para hacer herencia en Java se utiliza la palabra reservada extends.

¿Cuándo utilizar herencia?

Uno de los errores más comunes de los desarrolladores es utilizar herencia en un par de clases donde no existe esa relación, entonces, ¿Cuándo utilizar herencia? Debemos utilizar herencia cuando entre un par de clases se cumple la relación ES-UN, veamos algunos ejemplos:

Mal uso

/**
 * @author maagapi
 *
 */
class NoteBook {
}

class Book extends NoteBook {
}

Este es uno de los errores más comunes, en este ejemplo tenemos la clase libro y cuaderno, podríamos pensar que un ambas tiene características similares y pensar que uno puede heredar del otro. Para resolver esta duda tenemos que aplicar la regla ES-UN.

  • Book ES-UN NoteBook : No un libro no es un cuaderno, por eso podemos decir que no existe herencia entre ambos.
/**
 * @author maagapi
 *
 */
class Car {
}

class Bus extends Car {
}

En este ejemplo podríamos tener una confusión similar ya que podríamos pensar que como ambos pueden tener llantas, color, etc. Puede uno heredar del otro, así que para resolver la duda aplicaremos de nuevo la regla ES-UN:

  • Un Bus es un Auto :No ambos son similares pero no podemos decir que un auto bus es un auto, para resolver este caso se podría crear una clase padre llamada LandVehicle, de este modo tanto auto bus como auto podrían heredar de vehículo terrestre.

Buen uso

/**
 * @author maagapi
 *
 */
class Animal {
}

class Dog extends Animal {
}

En este ejemplo se tienen dos clases, Animal es la clase padre y Perro es la clase hija, así que aplicaremos la regla ES-UN:

  • Un Perro es un Animal : La respuesta es si, de tal modo que se puede aplicar herencia sin ningún problema
class Number {
....
}

class Double extends Number {
....
}

Este es un ejemplo que viene en el api de Java, tenemos dos clases la clase Number y la clase Double, así que aplicaremos la regla:

  • Un double es un Number: La respuesta es si, de tal modo que Double puede heredar de Number.

Notas importantes sobre herencia

  • La herencia permite transmitir métodos y atributos de una clase a una sub clase.
  • Solo se heredan los métodos y atributos públicos, protected y default.
  • No se puede heredar de una clase final.
  • Es posible tener múltiples niveles de herencia.
  • Todas las clases en Java son sub clases de Object, aunque no hereden directamente de ella ya que si vamos hacia arriba en el árbol de herencia, eventualmente llegaremos a una clase que no herede de ninguna otra y esa hereda de Object.
  • El operador instanceof devolverá true cuando se utilice una referencia con su clase y todas sus clases padres para más información de instanceof ver Tutorial Java Básico Operador instanceof.

Los libros recomendados para este tema son:

Autor: Alejandro Agapito Bautista

Twitter: @raidentrance

Contacto:raidentrance@gmail.com

Anuncios

1 comentario »

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s