Cet article analyse la différence entre les interfaces et les classes abstraites dans l'apprentissage Java, ce qui est crucial pour que les débutants apprennent en profondeur et saisissent avec précision les concepts de programmation Java. Les détails sont les suivants :
Les débutants Java posent souvent des questions telles que : Quelle est la différence entre les interfaces et les classes abstraites ? Sur quelles bases choisissez-vous d’utiliser les interfaces et les classes abstraites ?
Les concepts d'interfaces et de classes abstraites sont différents. L'interface est l'abstraction des actions et la classe abstraite est l'abstraction de la source.
La classe abstraite représente ce qu'est cet objet. L'interface représente ce que cet objet peut faire. Par exemple, les hommes et les femmes, ces deux classes (si ce sont des classes...), leur classe abstraite, ce sont les gens. Expliquez qu'ils sont tous des êtres humains.
Les gens peuvent manger, et les chiens peuvent aussi manger. Vous pouvez définir « manger » comme interface, puis laisser ces classes l'implémenter.
Par conséquent, dans les langages de haut niveau, une classe ne peut hériter que d’une seule classe (classe abstraite) (tout comme une personne ne peut pas être à la fois un être vivant et un être non vivant), mais elle peut implémenter plusieurs interfaces (interface alimentaire). , interface de marche).
Le premier point. Une interface est une variante d'une classe abstraite et toutes les méthodes de l'interface sont abstraites. Une classe abstraite est une classe qui déclare l’existence d’une méthode sans l’implémenter.
Le deuxième point. Les interfaces peuvent être héritées, mais pas les classes abstraites (Remarque : l'auteur original a fait une erreur ici. Les classes abstraites peuvent être héritées. Si toutes les sous-classes implémentent les méthodes de la classe abstraite, la sous-classe n'est pas une classe abstraite ; sinon, l'une d'elles n'a pas été implémenté, alors la sous-classe est également une classe abstraite)
Le troisième point. Les méthodes de définition d'interface ne peuvent pas être implémentées, tandis que les classes abstraites peuvent implémenter certaines méthodes.
Le quatrième point. Le type de données de base dans l'interface est statique mais l'image abstraite ne l'est pas.
Lorsque vous vous concentrez sur l’essence d’une chose, utilisez des classes abstraites ; lorsque vous vous concentrez sur une opération, utilisez des interfaces.
La fonctionnalité des classes abstraites dépasse de loin celle des interfaces, mais le coût de définition des classes abstraites est élevé . Car dans les langages de haut niveau (et en termes de conception réelle), chaque classe ne peut hériter que d'une seule classe. Dans cette classe, vous devez hériter ou écrire toutes les caractéristiques communes de toutes ses sous-classes. Bien que l'interface soit beaucoup plus faible en termes de fonctionnalité, il ne s'agit que d'une description d'une action. Et vous pouvez implémenter plusieurs interfaces dans une même classe en même temps. La difficulté sera réduite dès la phase de conception.