Professional Documents
Culture Documents
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:
POLIMORFISMO
El polimorfismo son las muchas formas que puede tomar el objeto dependiendo del contexto donde
lo utilices.
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:
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:
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()
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.
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:
Debe hacer uso de los conceptos de herencia, clases y métodos abstractos, así como del
polimorfismo.