Video: 76. Programación en Java || POO || Clases y métodos abstractos 2024
Una clase abstracta en Java es una clase que contiene uno o más métodos abstractos , que son simplemente declaraciones de métodos sin cuerpo, es decir, sin código ejecutable que implementa la clase o el método. Un método abstracto es como un prototipo de un método, que declara el tipo de devolución del método y la lista de parámetros pero no proporciona una implementación real del método.
No puedes instanciar una clase abstracta. Sin embargo, puede crear una subclase que amplíe una clase abstracta y proporcione una implementación de los métodos abstractos definidos por la clase abstracta. Puede instanciar la subclase.
Para crear un método abstracto, especifique el resumen del modificador y reemplace el cuerpo del método con un punto y coma:
public-abstract return-type method-name (parameter-list);
Aquí hay un ejemplo:
public int hit (int batSpeed);
Para crear una clase abstracta, use el resumen en la declaración de clase e incluya al menos un método abstracto. Por ejemplo:
clase pública abstracta Bola {public abstract int hit (int batSpeed);}
Puedes crear una subclase de una clase abstracta como esta:
public class BaseBall extends Ball {public int hit (int batSpeed) {// código que implementa el método de hit va aquí}}
Cuando subclases una clase abstracta, la subclase debe proporcionar un implementación para cada método abstracto en la clase abstracta. En otras palabras, debe anular cada método abstracto.
Las clases abstractas son útiles cuando desea crear un tipo genérico que se usa como la superclase para dos o más subclases, pero la superclase en sí misma no representa un objeto real. Si todos los empleados son asalariados o por hora, por ejemplo, tiene sentido crear una clase Empleado abstracta y luego usarla como la clase base para las subclases SalariedEmployee y HourlyEmployee.
Aquí hay algunos detalles adicionales con respecto a las clases abstractas:
-
No todos los métodos en una clase abstracta tienen que ser abstractos. Una clase puede proporcionar una implementación para algunos de sus métodos pero no para otros. De hecho, incluso si una clase no tiene ningún método abstracto, puede declararlo como abstracto. (En ese caso, sin embargo, no se puede crear una instancia de la clase.)
-
Un método privado no puede ser abstracto. Todos los métodos abstractos deben ser públicos.
-
Una clase no puede ser tanto abstracta como final.