Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Diferencia entre clase Abstracta y clase Normal

Cuando me preguntan cuál es la diferencia entre una clase y una clase abstracta, les respondo que una clase abstracta, a diferencia de una normal, no puede instanciarse. Esto quiere decir que no es posible crear o instanciar un objeto a partir de una clase abstracta. Además, una clase abstracta nos permite tener atributos y métodos abstractos, algo que no es posible en una clase normal.

  • Ok ok, pero... ¿Esto para qué sirve entonces, si no puedo crear objetos de esta clase?

Una clase abstracta sirve para darle forma a otras clases a través de la Herencia. Por ejemplo, imaginemos que tenemos 3 clases, Animal, Perro y Gato. Animal es la clase abstracta porque no sabemos qué tipo de animal representa, y Gato y Perro son clases normales hijas de la clase Animal que es abstracta.

La clase Animal tiene el método:

abstract void emitirSonido()

  • Oye oye, pero ese método no sirve, no tiene cuerpo, no hace nada!

No es que no sirva, es abstracta, no sabemos cómo funciona. El perro y gato lo sabrán porque heredarán la firma de este método y ellos implementarán la funcionalidad. Entronces la clase perro tendrá el siguiente método

@Override
void emitirSonido(){
     System.out.println("Guau!");
}

Mientras que Gato tendrá el siguiente método, también heredado de la clase Animal:

@Override
void emitirSonido(){
    System.out.println("Miau");
}

así es, son perros y gatos comunes y corrientes que emiten sonidos de perros y gatos comunes y corrientes. ¿Qué esperabas, que hablaran?

De cualquier modo, a esto también se le conoce como Polimorfismo. ¿Bonito, verdad?

1 respuesta

Hola Jorge, espero que estés bien!

Fue una buena explicación sobre polimorfismo y me alegra que estés estudiando tan bien como para poder enseñar con tus palabras aquí en el foro. Espero que Disfrute el contenido del programa ONE y también de la comunidad del grupo 04 <3

Saludos y buenos estudios!