¿Qué es una clase abstracta y un método abstracto en Java? ¿Cuándo debo usarlo? Tutorial adjunto

Publicado: 2019-09-12
java-abstract-class-tutorial-by-crunchify

Hace un par de días escribí un artículo sobre los fundamentos básicos de Java sobre ¿Qué es una interfaz en Java y cómo se usa? Este tutorial también está relacionado con la " Abstract Class and Abstract Method " fundamentales de Java.

¿Que es una clase abstracta?

Comencemos a entender primero la clase abstracta y luego repasaremos el ejemplo.

  • Una clase abstracta es una clase que se declara abstract
  • Las clases abstractas no se pueden instanciar.
  • Las clases abstractas se pueden subclasificar
  • Puede o no incluir métodos abstractos.
  • Cuando se subclassed una clase abstracta, la subclase generalmente proporciona implementaciones para todos los métodos abstractos en su clase principal.
  • Si la subclase no proporciona implementaciones, la subclase también debe declararse abstract .

Esta es una basic Java Interview Question . Probablemente la 1 st Java Interview Question que recibe durante la entrevista.

¿Puedo definir una clase abstracta sin agregar un método abstracto?

Por supuesto que sí. Declarar una clase como abstracta solo significa que no permite que se cree una instancia por sí sola. No puede tener un método abstracto en una clase no abstracta.

¿Qué es un método abstracto?

  • Un abstract method es un método que se declara sin una implementación.
  • Solo tiene una firma de método.

Comencemos con un ejemplo. Descripción del problema:

  1. Cree la clase CrunchifyExam.java , que tiene un método abstracto llamado checkResult()
  2. Cree la clase Crunchify1stSchoolExamResult.java , que amplía la clase Abstract CrunchifyExam.java
  3. Cree la clase Crunchify2ndSchoolExamResult.java , que amplía la clase Abstract CrunchifyExam.java
  4. Ahora las dos clases anteriores tienen que proporcionar implementación para el método checkResult()
  5. Ambas escuelas pueden tener su propio procedure diferente o number of checks para averiguar si el usuario PASSED or FAILED , son libres de tener su propia implementación de checkResult()

Una vez que extienda la clase CrunchifyExam en Crunchify1stSchoolExamResult.java , Eclipse le pedirá que implemente los métodos abstractos mencionados en CrunchifyExam.java

Implementar el método abstracto - Tutorial de Crunchify

Crunchify1 st SchoolExamResult.java

Crunchify2 nd SchoolExamResult.java

Resultado de la consola de Eclipse:

Simplemente haga clic derecho en Crunchify2ndSchoolExamResult.java y ejecútelo como Java Application para ver el resultado a continuación.

Ahora usted puede tener una pregunta

¿Por qué no puedo usar la interfaz aquí en lugar de tener el Abstract Method y Class abstractos y tener CrunchifyExam como interfaz?

Bueno, Sure you could , pero también necesitaría implementar los getExamTime (), setExamTime (), getExamTime (), setExamTime ().

Mediante el uso de clases abstractas, puede heredar la implementación de otros métodos (no abstractos). No puede hacer eso con las interfaces: una interfaz cannot provide ninguna implementación de método.

¿Es posible crear una clase abstracta y final en Java?

  • Lo abstracto y lo final son el concepto mutuamente excluyente.
  • Entonces, la respuesta es NO, no podemos hacer que una clase o método abstracto sea final en Java.
  • La clase final es una clase completa y no puede extenderse más.
  • La clase abstracta se llama clase incompleta y solo puede extenderse con otra clase concreta y debe implementar todos los métodos abstractos.
  • Además, no hay forma ni es posible tener un método abstracto en una clase final.

¿Es posible heredar de múltiples clases abstractas en Java?

  • Java no admite la herencia múltiple.
  • En Java solo podemos extender una sola clase.
  • En Java podemos implementar interfaces de muchas fuentes.