Maison > Java > javaDidacticiel > le corps du texte

L'essentiel de l'entretien Java : FAQ sur les interfaces et les classes abstraites

WBOY
Libérer: 2024-03-04 09:07:15
avant
411 Les gens l'ont consulté

Java 面试必备:接口与抽象类的常见问题解答

L'éditeur PHP Apple a compilé un guide nécessaire pour les entretiens Java : Foire aux questions sur les interfaces et les classes abstraites. Dans les entretiens Java, les interfaces et les classes abstraites sont des sujets importants souvent abordés. A travers cet article, vous découvrirez les différences, les scénarios d'utilisation, les avantages et les inconvénients des interfaces et des classes abstraites, etc., ce qui vous aidera à mieux préparer les entretiens et à démontrer vos capacités techniques. Plongeons dans ces questions clés pour soutenir votre entretien Java !

  • Interface :
    • Définit un ensemble de signatures de méthode, mais aucun détail d'implémentation.
    • Déclare le contrat de la classe, forçant la classe qui implémente l'interface à implémenter la méthode spécifiée.
  • Cours abstrait :
    • Peut contenir à la fois des méthodes abstraites (sans détails d'implémentation) et des méthodes concrètes (avec détails d'implémentation).
    • Déclare le comportement de la classe. Les sous-classes doivent implémenter des méthodes abstraites et peuvent remplacer les méthodes concrètes.

Q2 : Quelle est la différence entre une interface et une classe abstraite ?

Caractéristiques Interface Cours abstrait
Méthode Peut uniquement être déclaré, pas mis en œuvre peut être déclaré et mis en œuvre
Réalisé Doit être implémenté par la classe qui l'implémente Peut être implémenté via des sous-classes
Héritage multiple Prend en charge l'héritage multiple Ne prend pas en charge l'héritage multiple
Instanciation Ne peut pas être instancié Peut instancier (mais pas créer d'objets)

Q3 : Quand utiliser une interface ou une classe abstraite ?

  • Interface d'utilisation :
    • Définissez le contrat fonctionnel d'une classe sans préciser les détails d'implémentation.
    • Quand le polymorphisme doit être atteint (même comportement requis, mais implémentations différentes).
  • Utilisez des cours abstraits :
    • Définissez un ensemble commun de comportements et de propriétés pour une classe, permettant aux classes descendantes de s'étendre.
    • Quand il est nécessaire de fournir une implémentation par défaut et de permettre aux sous-classes de se spécialiser.

Q4 : Quelle est la relation entre l'héritage multiple d'interfaces et l'héritage simple-multiple de classes abstraites ?

  • Héritage multiple d'interface : Une classe peut implémenter plusieurs interfaces, héritant ainsi des signatures de méthode définies dans ces interfaces.
  • Héritage unique des classes abstraites : Une classe ne peut hériter que d'une seule classe abstraite, mais le polymorphisme peut être obtenu en implémentant plusieurs interfaces.

Q5 : méthodes par défaut et statiques dans les interfaces

Java 8 introduit les méthodes d'interface par défaut et statiques :

  • méthode par défaut : Une méthode d'interface implémentée qui peut être remplacée par une classe qui implémente l'interface.
  • Méthode statique : Méthode d'interface non implémentée qui peut être appelée sans créer d'instance de l'interface.

Code démo :

interface Drawable {
void draw();
default void print() { System.out.println("Drawing..."); }
static void show() { System.out.println("Show drawing..."); }
}
class Circle implements Drawable {
@Override
public void draw() { System.out.println("Drawing a circle..."); }
}
public class Main {
public static void main(String[] args) {
Drawable circle = new Circle();
circle.draw();
Drawable.print();
Drawable.show();
}
}
Copier après la connexion

Sortie :

Drawing a circle...
Drawing...
Show drawing...
Copier après la connexion

Q6 : méthodes finales et statiques dans les classes abstraites

Les classes abstraites peuvent contenir des méthodes finales et statiques :

  • méthode finale : ne peut pas être remplacée par les sous-classes.
  • méthodes statiques : associées à la classe elle-même, pas à ses instances.

Q7 : Autorisations d'accès dans les interfaces et les classes abstraites

Toutes les méthodes et constantes de l'interface sont publiques et abstraites par défaut. Les méthodes des classes abstraites peuvent avoir différents droits d'accès, mais les méthodes abstraites sont publiques et abstraites par défaut.

Q8 : Instanciation et appel d'interfaces et de classes abstraites

  • Interface :  ne peut pas être instancié directement, mais peut être instancié via une classe qui l'implémente.
  • Classe abstraite : Peut être instanciée, mais ne peut pas créer d'objets. Ses méthodes doivent être accessibles indirectement en créant une instance de sa sous-classe.

Q9 : Comparaison des interfaces et des classes abstraites

Caractéristiques Interface Cours abstrait
Polymorphisme Support Support
Méthode abstraite Doit déclarer peut déclarer
Méthode spécifique Non pris en charge peut déclarer
Héritage multiple Support Non pris en charge
Instanciation Ne peut pas être instancié Peut être instancié, mais ne peut pas créer d'objets
Débogage Difficulté (le faire dans le cours de mise en œuvre) Relativement facile (faites-le dans un cours abstrait)
Flexibilité et évolutivité Plus flexible et plus évolutif Faible flexibilité et faible évolutivité

Q10 : Questions pièges courantes lors des entretiens

  • Mélanger les interfaces et les classes abstraites.
  • Fausse hypothèse selon laquelle les interfaces peuvent contenir des méthodes concrètes.
  • Oubliez que les méthodes dans les interfaces sont publiques et abstraites par défaut.
  • Pensez que les classes abstraites peuvent prendre en charge l'héritage multiple.
  • Je ne comprends pas le rôle des méthodes d'interface par défaut et statiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:lsjlt.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal