Qu'est-ce qu'une classe abstraite et une méthode abstraite en Java ? Quand dois-je l'utiliser ? Tutoriel joint

Publié: 2019-09-12
java-abstract-class-tutoriel-par-crunchify

Il y a quelques jours, j'ai écrit un article sur les principes fondamentaux de Java sur Qu'est-ce qu'une interface en Java et comment elle est utilisée? Ce tutoriel est également lié aux principes fondamentaux de Java " Abstract Class and Abstract Method ".

Qu'est-ce qu'une classe abstraite?

Commençons d'abord par comprendre la classe abstraite, puis nous passerons en revue l'exemple.

  • Une classe abstraite est une classe déclarée abstract
  • Les classes abstraites ne peuvent pas être instanciées
  • Les classes abstraites peuvent être sous-classées
  • Il peut inclure ou non des méthodes abstraites
  • Lorsqu'une classe abstraite est subclassed -classée, la sous-classe fournit généralement des implémentations pour toutes les méthodes abstraites de sa classe parent.
  • Si la sous-classe ne fournit pas d'implémentations, la sous-classe doit également être déclarée abstract .

Il s'agit d'une basic Java Interview Question . Probablement la 1 st Java Interview Question que vous recevez lors de l'entretien.

Puis-je définir une classe abstraite sans ajouter de méthode abstraite ?

Bien sûr que oui. Déclarer un abstract de classe signifie seulement que vous ne lui permettez pas d'être instancié par lui-même. Vous ne pouvez pas avoir de méthode abstraite dans une classe non abstraite.

Qu'est-ce qu'une méthode abstraite ?

  • Une abstract method est une méthode déclarée sans implémentation.
  • Il a juste une signature de méthode.

Commençons par un exemple. Description du problème:

  1. Créez la classe CrunchifyExam.java , qui a une méthode abstraite appelée checkResult()
  2. Créez la classe Crunchify1stSchoolExamResult.java , qui étend la classe abstraite CrunchifyExam.java
  3. Créer la classe Crunchify2ndSchoolExamResult.java , qui étend la classe abstraite CrunchifyExam.java
  4. Maintenant, les deux classes ci-dessus doivent fournir une implémentation pour la méthode checkResult()
  5. Les deux écoles peuvent avoir leur propre procedure ou number of checks pour savoir si l'utilisateur est PASSED or FAILED , elles sont libres d'avoir leur propre implémentation de checkResult()

Une fois que vous avez étendu la classe CrunchifyExam dans Crunchify1stSchoolExamResult.java - Eclipse vous invitera à implémenter les méthodes abstraites mentionnées dans CrunchifyExam.java

Implémenter la méthode abstraite - Tutoriel Crunchify

Crunchify1st SchoolExamResult.java

Crunchify2 nd SchoolExamResult.java

Résultat de la console Eclipse :

Faites un clic droit sur Crunchify2ndSchoolExamResult.java et exécutez-le en tant qu'application Java Application pour voir le résultat ci-dessous.

Maintenant, vous pouvez avoir une question

Pourquoi ne puis-je pas utiliser Interface ici plutôt que d'avoir Abstract Method and Class et avoir CrunchifyExam comme interface?

Eh bien, bien Sure you could , mais vous devez également implémenter les getExamTime (), setExamTime (), getExamTime (), setExamTime ().

En utilisant des classes abstraites, vous pouvez hériter de l'implémentation d'autres méthodes (non abstraites). Vous ne pouvez pas faire cela avec des interfaces - une interface cannot provide aucune implémentation de méthode.

Est-il possible de créer une classe abstraite et finale en Java ?

  • L'abstrait et le final sont des concepts mutuellement exclusifs.
  • Donc la réponse est NON, nous ne pouvons pas rendre une classe abstraite ou une méthode finale en Java.
  • La classe finale est une classe complète et ne peut pas être prolongée davantage.
  • La classe abstraite est appelée classe incomplète et ne peut être étendue que par une autre classe concrète et vous devez implémenter toutes les méthodes abstraites.
  • De plus, il n'y a aucun moyen et il n'est pas possible d'avoir une méthode abstraite dans une classe finale.

Est-il possible d'hériter de plusieurs classes abstraites en Java ?

  • Java ne prend pas en charge l'héritage multiple.
  • En Java, nous ne pouvons étendre qu'une seule classe.
  • En Java, nous pouvons implémenter des interfaces à partir de nombreuses sources.