Vidéo: JAVA (Intermédiaire) - 24 - Classes abstraites et méthodes abstraites en Java 2024
Les interfaces et les classes abstraites ont des méthodes abstraites en Java. Mais les méthodes abstraites jouent des rôles légèrement différents dans ces deux types de types de référence. Comment pouvez-vous garder tout droit dans votre esprit?
La première chose à faire est de se rappeler que personne n'apprend des concepts de programmation orientés objet sans avoir beaucoup de pratique dans l'écriture de code. Si vous êtes confus, cela peut être une bonne chose. Cela signifie que vous avez suffisamment compris pour savoir à quel point ce genre de choses est compliqué. Plus vous écrivez de code, plus vous serez à l'aise avec les classes, les interfaces et toutes ces autres idées.
La prochaine chose à faire est de trier les différences dans la façon dont vous déclarez les méthodes abstraites. Voici l'histoire.
Dans une classe ordinaire (non-abstraite) | Dans une interface | Dans une classe abstraite | |
Les méthodes abstraites sont-elles autorisées? | Non | Oui | Oui |
Une déclaration de méthode peut-elle contenir le mot-clé abstract ? | Non | Oui | Oui |
Une déclaration de méthode peut-elle contenir le mot-clé par défaut (signifiant "non abstrait")? | Non | Oui | Non |
Avec ni résumé ni défaut | Pas abstrait | Résumé | Pas abstrait |
Les interfaces et les classes abstraites ont des méthodes abstraites. Vous vous demandez peut-être comment choisir entre déclarer une interface et déclarer une classe abstraite. En fait, vous pourriez demander à trois programmeurs professionnels comment les interfaces et les classes abstraites diffèrent les unes des autres. Si vous le faites, vous pouvez obtenir cinq réponses différentes. (Oui, cinq réponses, pas trois réponses.)
Les interfaces et classes abstraites sont des bêtes similaires, et les nouvelles fonctionnalités de Java 8 les rendaient encore plus similaires que dans les versions précédentes de Java. Mais l'idée de base concerne les relations entre les choses.
- L'extension d'une sous-classe représente une est une relation.
- L'implémentation d'une interface représente une relation peut faire.
Si vous voulez une preuve plus tangible de la différence entre une interface et une classe abstraite, considérez ceci: Une classe peut implémenter plusieurs interfaces, mais une classe peut étendre seulement une autre classe, même si cette classe est une classe abstraite. Ainsi, après avoir déclaré que
Dog publique étend HousePet
, vous ne pouvez pas faire
Dog
étendre une classe
Friend
. Mais vous pouvez faire
Dog
implémenter une interface
Befriendable
. Ensuite, vous pouvez faire en sorte que la même classe
Dog
implémente une interface
Trainable
.
Et, si vous voulez une différence tangible de plus de entre une interface et une classe abstraite, en voici une pour vous: Une interface ne peut contenir aucun champ non-statique et non-final.
Alors là. Les interfaces et les classes abstraites sont différentes les unes des autres. Mais si vous êtes nouveau au jeu, vous ne devriez pas vous inquiéter de la différence. Lisez juste autant de code que vous le pouvez et n'ayez pas peur quand vous voyez une méthode abstraite. C'est tout ce qu'on peut en dire.