You are on page 1of 7

CLASES Y MÉTODOS ABSTRACTOS

Una clase abstracta se utiliza solo como super clase o como clase padre, es decir, no puede haber
una super clase que solamente sea hija y que no tenga hijos aparte; además, no se pueden instanciar
objetos de una clase abstracta y sirve para proporcionar una super clase apropiada a partir de la
cual heredan otras clases.

Consideremos el siguiente ejemplo, supongamos que tenemos la super clase SerVivo, esta clase es
demasiado general, ya que existen una gran cantidad de seres vivos, además, el método de la clase
(alimentarse()), puede ser implementado de diferentes maneras porque depende del ser vivo que
se esté alimentando, es por ello que no es posible implementarlo en esta clase porque no hay una
forma única de hacerlo.

Ahora, la clase SerVivo tiene 2 hijos, la subclase planta y la subclase animal. Para la subclase planta,
al heredar el método alimentarse, ya es posible implementarse (las plantas se alimentan por la
fotosíntesis). Para la subclase animal, nos encontramos con que el método también depende de la
clase de animal que se esté alimentando, por lo que se crean 2 subclases nuevas, la subclase
carnívora y la subclase herbívoro

SerVivo
alimentarse();

Planta Animal
alimentarse(); alimentarse();

Carnivoro Herbivoro
alimentarse(); alimentarse();

En conclusión, la clase SerVivo es una clase abstracta y el método alimentarse es abstracto por lo
que no es necesario implementarlo en esta clase. La clase animal es una clase abstracta y el
método que hereda de la clase SerVivo también es abstracto.

La palabra reservada que se usa para definir una clase y método abstracto es abstract.

Actividad: Cree un proyecto y un paquete, con las siguientes clases SerVivo, Planta, Animal,
AnimalHerbivoro, AnimalCarnivoro y principal. A continuación se muestra el código para cada
clase.
Para la clase SerVivo:

Para la clase Planta

Para la clase Animal:

Para la clase AnimalCarnivoro:

Para la clase AnimalHerbivoro:


Para la clase principal:

POLIMORFISMO

En una relación de tipo herencia, un objeto de la superclase puede almacenar un objeto de


cualquiera de sus subclases. Esto significa que la clase padre o superclase es compatible con los tipos
que derivan de ella. Pero no al revés.

El polimorfismo son las muchas formas que puede tomar el objeto dependiendo del contexto donde
lo utilices.

Consideremos el ejemplo que se muestra en el diagrama.

La clase vehículo con sus atributos y modificador de acceso de tipo protected, el método
mostrarDatos es publico que retorna un String y se hereda a las 3 subclases (vehiculoTurismo,
vehiculoDeportivo y vehiculoFurgoneta).

Ahora, si queremos crear un objeto con la clase vehículo, tendríamos que hacer lo siguiente:

Vehiculo miVehiculo = new Vehiculo(“ABC123”, “Ferrari”, “A8”);

¿Cómo se aplica el concepto de polimorfismo?

El polimorfismo nos permite instanciar un objeto de la clase padre a través de una de sus subclases,
si queremos instanciar un objeto de la clase vehículo desde la clase vehiculoTurismo, podemos hacer
lo siguiente:
Vehiculo miVehiculo2 = new VehiculoTurismo(“ABC123”, “Ferrari”, “A8”, 4);

Es necesario que al instanciar el objeto con la clase hija, se envíen los parámetros de la clase padre
y los de la clase hija. También podemos hacer lo siguiente:

Vehiculo miVehiculo3 = new VehiculoDeportivo(“ABC123”, “Ferrari”, “A8”, 6);

Vehiculo miVehiculo4 = new VehiculoFurgoneta(“ABC123”, “Ferrari”, “A8”, 2000);

El polimorfismo nos permite instanciar un objeto no solo con la misma clase, sino también por sus
clases hijas.

vehiculo

String matricula
String Marca
String modelo
string mostrarDatos()

int numPuertas int numCilindros int carga


string mostrarDatos(); String mostrarDatos(); String mostrarDatos();

VehiculoTurismo VehiculoDeportivo vehiculoFurgoneta

Actividad: Cree un proyecto en Netbeans y un package, dentr del package agregue las siguientes
clases: Principal, Vehiculo, vehiculoDeportivo, VehiculoFurgoneta, vehiculoTurismo y agregue el
siguiente código.

Para la clase vehiculo:


Para la clase vehiculoDeportivo:

Para la clase vehiculoFurgoneta


Para la clase vehiculoTurismo:

Para la clase principal.


EXAMEN FINAL.

Hacer un programa para calcular el área de polígonos (Triángulos y rectángulos) el programa debe
ser capaz de almacenar en un arreglo de N triángulos y rectángulos, y al final mostrar el área y los
datos de cada uno. Para ello, se tendrá lo siguiente:

• Una super clase llamada polígono.


• Una sub clase llamada rectángulo.
• Una sub clase llamada Triángulo.

Debe hacer uso de los conceptos de herencia, clases y métodos abstractos, así como del
polimorfismo.

You might also like