lunes, 6 de mayo de 2013

Herencia - Superclases y subclases

Al pensar en el término Figura geométrica algunos puede imaginar un cuadrado inmediatamente, otros un círculo, algunos más un triángulo, y los más raros un octágono.
A pesar de ser figuras diferentes, comparten algunas cosas en común, como tener área, tener perímetro, etc.
Si este concepto lo aplicamos en la programación orientada a objetos, en la que FiguraGeometrica fuera una clase; las clases: Círculo, Cuadrado, Triangulo, Octágono, serían subclases de la superclase FiguraGeometrica.

Pensemos en otro ejemplo.

La superclase Fruta puede tener infinitas sublcases como: Manzana, Mango, Pera, Uva, etc. Todas estas subclases deben tener algo en común que han heredado de la clase Fruta.
La superclase Fruta debe ser más abstracta (generalizada).
Las subclases Manzana, Mango, Pera y Uva deben ser más específicas.
 Si intentamos definir la clase Fruta muy rápidamente quedaría de la siguiente forma:

public class Fruta{
    private String color;
    private double peso;
         [...]
}

Si al describirnos una fruta, intentaran darnos solo el color y el peso, tal vez tendríamos alguna idea de qué fruta se trata, pero no estaríamos seguros, ahora veamos cómo sería la definición de la subclase Manzana:

public class Manzana extends Fruta{
    private String tipo;
    private double precio;
    private String temporada;
    [...]
}

Este fue un ejemplo muy sencillo, ahora te corresponde a ti intentar definir la superclase y las subclases de otros ejemplos como Vehículos, Animales, etc.