Una clase abstracta en Java es similar a una interfaz, excepto que puede contener la implementación de un método predeterminado. Una clase abstracta puede tener un método abstracto sin cuerpo y también puede tener métodos con implementación. abstractLa palabra clave se utiliza para crear una clase y un método abstractos. En Java, no se pueden crear instancias de una clase abstracta. Una clase abstracta se utiliza principalmente para proporcionar una base para que las subclases extiendan e implementen los métodos abstractos y anulen o utilicen los métodos implementados en la clase abstracta.
Clase abstracta en Java
A continuación se muestra un ejemplo simple de una clase abstracta en Java.
package com.journaldev.design;//abstract classpublic abstract class Person {private String name;private String gender;public Person(String nm, String gen){this.name=nm;this.gender=gen;}//abstract methodpublic abstract void work();@Overridepublic String toString(){return "Name="+this.name+"::Gender="+this.gender;}public void changeName(String newName) {this.name = newName;}}
Tenga en cuenta que work()es un método abstracto y no tiene cuerpo. A continuación, se muestra un ejemplo de 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;}@Overridepublic void work() {if(empId == 0){System.out.println("Not working");}else{System.out.println("Working as employee!!");}}public static void main(String args[]){//coding in terms of abstract classesPerson student = new Employee("Dove","Female",0);Person employee = new Employee("Pankaj","Male",123);student.work();employee.work();//using method implemented in abstract class - inheritanceemployee.changeName("Pankaj Kumar");System.out.println(employee.toString());}}
Tenga en cuenta que la subclase Employee hereda las propiedades y los métodos de la superclase Person mediante la herencia en Java . Observe también el uso de la anotación Override en la clase Employee. Lea más sobre por qué siempre debemos usar la anotación Override al anular un método .
Puntos importantes de las clases abstractas en Java
abstractLa palabra clave se utiliza para crear una clase abstracta en Java.- Las clases abstractas en Java no se pueden instanciar.
- Podemos usar
abstractpalabras clave 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 usando la palabra clave abstract, de lo contrario no se compilará.
- No es necesario que una clase abstracta tenga un método abstracto. Podemos marcar una clase como abstracta incluso si no declara ningún método abstracto.
- Si la clase abstracta no tiene ninguna implementación de método, es mejor usar la 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 de una interfaz son implícitamente abstractos, a menos que los métodos de la interfaz sean estáticos o predeterminados. Los métodos estáticos y predeterminados en las interfaces se agregaron en Java 8. Para obtener más detalles, lea Cambios en la interfaz de Java 8 .
- La clase abstracta de Java puede implementar interfaces sin siquiera proporcionar la implementación de métodos de interfaz.
- La clase abstracta de Java se utiliza para proporcionar una implementación de método común a todas las subclases o para proporcionar una implementación predeterminada.
- Podemos ejecutar una clase abstracta en Java como cualquier otra clase si tiene
main()un método.
Eso es todo sobre una clase abstracta en Java. Si me olvidé de algo importante, háganoslo saber en los comentarios.