Método abstracto
Java nos permite definir un método sin implementarlo declarando el método con el modificador abstracto. Un método abstracto no tiene cuerpo; simplemente tiene una definición de firma seguida de un punto y coma.
// Ejemplo de método abstracto
public abstract String saludo();
Clase abstracta
Una clase abstracta es aquella cuya implementación es incompleta y no puede ser instanciada. Cualquier clase con uno o más métodos abstractos debe declararse abstracta.
// Ejemplo de clase abstracta
public abstract class SerVivo{
//Atributos
//Métodos
}
Consideraciones
- Cualquier clase con un método abstracto se abstrae automáticamente y debe declararse como tal.
- La clase abstracta no puede ser instanciada.
- Una subclase de una clase abstracta se puede instanciar solo si invoca a cada uno de los métodos abstractos de su superclase y proporciona una implementación para todos ellos. Dicha clase a menudo se denomina subclase concreta, para enfatizar el hecho de que no es abstracta.
- Si una subclase de una clase abstracta no implementa todos los métodos abstractos que hereda, esa subclase es en sí misma abstracta.
- Los métodos estáticos, privados y finales no pueden ser abstractos, ya que estos tipos de métodos no pueden ser anulados por una subclase. Del mismo modo, una clase final no puede contener ningún método abstracto.
- Una clase puede declararse abstracta incluso si en realidad no tiene ningún método abstracto. Declarar dicho resumen de clase indica que la implementación está de alguna manera incompleta y está destinada a servir como una superclase para una o más subclases que completarán la implementación. Tal clase no puede ser instanciada.
Ejemplo en código
Se creó dos clases, una abstracta llamada "Figura" y otra común llamada "Cuadrado", la primera tiene dos métodos abstractos y es la superclase de la segunda, esto implica que los dos métodos se deben implementar en la clase hija o subclase.
package entidades;
public abstract class Figura {
public abstract Double area();
public abstract Double perimetro();
}
package entidades;
public class Cuadrado extends Figura{
private Double lado;
public Cuadrado(Double lado) {
super();
this.lado = lado;
}
@Override
public Double area() {
return Math.pow(lado, 2);
}
@Override
public Double perimetro() {
return 4*lado;
}
public Double getLado() {
return lado;
}
public void setLado(Double lado) {
this.lado = lado;
}
}
package test;
import entidades.Cuadrado;
public class Ejecutor {
public static void main(String[] args) {
Cuadrado cuadrado = new Cuadrado(3d);
System.out.println("Medida del lado: " + cuadrado.getLado().toString());
System.out.println("Área: " + cuadrado.area().toString());
System.out.println("Perímetro: " + cuadrado.perimetro().toString());
}
}
Salida:
Medida del lado: 3.0
Área: 9.0
Perímetro: 12.0
Esquema del proyecto:
Fuentes:
- Flanagan, D. (2002). JAVA IN A NUTSHELL Desktop Quick Reference (4a ed.). England: Pearson Education.
No hay comentarios:
Publicar un comentario