La clase abstracta en Java es similar a la interfaz, excepto que puede contener una implementación de método predeterminado. Una clase abstracta puede tener un método abstracto sin cuerpo y también puede tener métodos con implementación. La palabra clave abstract
se utiliza para crear una clase y un método abstracto. No se puede instanciar una clase abstracta en Java. Se utiliza principalmente para proporcionar una base para que las subclases la extiendan e implementen los métodos abstractos, y para anular o utilizar los métodos implementados en la clase abstracta.
Clase Abstracta en Java
Aquí tienes un ejemplo simple de una Clase Abstracta en Java.
package com.journaldev.design;
//clase abstracta
public abstract class Person {
private String name;
private String gender;
public Person(String nm, String gen){
this.name=nm;
this.gender=gen;
}
//método abstracto
public abstract void work();
@Override
public String toString(){
return "Name="+this.name+"::Gender="+this.gender;
}
public void changeName(String newName) {
this.name = newName;
}
}
Observa que work()
es un método abstracto y no tiene cuerpo. Aquí tienes un ejemplo de una clase concreta que extiende una clase abstracta en Java.
package com.journaldev.design;
public class Employee extends Person {
private int empId;
public Employee(String nm, String gen, int id) {
super(nm, gen);
this.empId=id;
}
@Override
public void work() {
if(empId == 0){
System.out.println("Not working");
}else{
System.out.println("Working as employee!!");
}
}
public static void main(String args[]){
//codificación en términos de clases abstractas
Person student = new Employee("Dove","Female",0);
Person employee = new Employee("Pankaj","Male",123);
student.work();
employee.work();
//uso del método implementado en la clase abstracta - herencia
employee.changeName("Pankaj Kumar");
System.out.println(employee.toString());
}
}
Ten en cuenta que la subclase Employee hereda las propiedades y métodos de la superclase Person mediante la herencia en Java. También observa el uso de la anotación Override en Employee class. Lee más sobre por qué siempre debemos usar la anotación Override al anular un método.
Puntos Importantes sobre Clases Abstractas en Java
abstract
se utiliza para crear una clase abstracta en Java.- Una clase abstracta en Java no se puede instanciar.
- Podemos usar la palabra clave
abstract
para crear un método abstracto, un método abstracto no tiene cuerpo. - Si una clase tiene métodos abstractos, entonces la clase también debe ser abstracta utilizando la palabra clave abstract, de lo contrario, no se compilará.
- No es necesario que una clase abstracta tenga métodos abstractos. Podemos marcar una clase como abstracta incluso si no declara ningún método abstracto.
- Si una clase abstracta no tiene ninguna implementación de método, es mejor usar una interfaz porque Java no admite la herencia de clases múltiples.
- La subclase de una clase abstracta en Java debe implementar todos los métodos abstractos a menos que la subclase también sea una clase abstracta.
- Todos los métodos en una interfaz son implícitamente abstractos a menos que los métodos de la interfaz sean estáticos o por defecto. Los métodos estáticos y los métodos por defecto en las interfaces se añadieron en Java 8, para más detalles, lee Java 8 cambios en interfaces.
- Una clase abstracta de Java puede implementar interfaces incluso sin proporcionar la implementación de los métodos de la interfaz.
- La clase abstracta de Java se utiliza para proporcionar implementación de métodos comunes a todas las subclases o para proporcionar implementación por defecto.
- Podemos ejecutar una clase abstracta en Java como cualquier otra clase si tiene el método
main()
.
Eso es todo para una clase abstracta en Java. Si me he perdido algo importante, por favor háznoslo saber a través de comentarios.
Source:
https://www.digitalocean.com/community/tutorials/abstract-class-in-java