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

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

Mar 04, 2024 am 09:07 AM

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment fonctionne le mécanisme de chargement de classe de Java, y compris différents chargeurs de classe et leurs modèles de délégation? Comment fonctionne le mécanisme de chargement de classe de Java, y compris différents chargeurs de classe et leurs modèles de délégation? Mar 17, 2025 pm 05:35 PM

Le chargement de classe de Java implique le chargement, la liaison et l'initialisation des classes à l'aide d'un système hiérarchique avec Bootstrap, Extension et Application Classloaders. Le modèle de délégation parent garantit que les classes de base sont chargées en premier, affectant la classe de classe personnalisée LOA

Comment implémenter la mise en cache à plusieurs niveaux dans les applications Java à l'aide de bibliothèques comme la caféine ou le cache de goyave? Comment implémenter la mise en cache à plusieurs niveaux dans les applications Java à l'aide de bibliothèques comme la caféine ou le cache de goyave? Mar 17, 2025 pm 05:44 PM

L'article examine la mise en œuvre de la mise en cache à plusieurs niveaux en Java à l'aide de la caféine et du cache de goyave pour améliorer les performances de l'application. Il couvre les avantages de configuration, d'intégration et de performance, ainsi que la gestion de la politique de configuration et d'expulsion le meilleur PRA

Comment puis-je utiliser JPA (Java Persistance API) pour la cartographie relationnelle des objets avec des fonctionnalités avancées comme la mise en cache et le chargement paresseux? Comment puis-je utiliser JPA (Java Persistance API) pour la cartographie relationnelle des objets avec des fonctionnalités avancées comme la mise en cache et le chargement paresseux? Mar 17, 2025 pm 05:43 PM

L'article discute de l'utilisation de JPA pour la cartographie relationnelle des objets avec des fonctionnalités avancées comme la mise en cache et le chargement paresseux. Il couvre la configuration, la cartographie des entités et les meilleures pratiques pour optimiser les performances tout en mettant en évidence les pièges potentiels. [159 caractères]

Comment utiliser Maven ou Gradle pour la gestion avancée de projet Java, la création d'automatisation et la résolution de dépendance? Comment utiliser Maven ou Gradle pour la gestion avancée de projet Java, la création d'automatisation et la résolution de dépendance? Mar 17, 2025 pm 05:46 PM

L'article discute de l'utilisation de Maven et Gradle pour la gestion de projet Java, la construction de l'automatisation et la résolution de dépendance, en comparant leurs approches et leurs stratégies d'optimisation.

Mar 17, 2025 pm 05:45 PM

L'article discute de la création et de l'utilisation de bibliothèques Java personnalisées (fichiers JAR) avec un versioning approprié et une gestion des dépendances, à l'aide d'outils comme Maven et Gradle.

See all articles