QCM : POO Java : polymorphisme et collections — 11 questions

Questions et réponses du QCM

1. En polymorphisme, qu’est-ce qui détermine la méthode redéfinie exécutée lorsqu’une référence désigne un objet ?

Le type déclaré de la référence utilisée
Le nom de la variable contenant la référence
Le nombre de méthodes de la classe déclarée
Le type réel de l’objet désigné

Le type réel de l’objet désigné

Explication

Le polymorphisme fait dépendre le comportement exécuté de l’objet réel désigné par la référence. Le type de la référence indique la vue accessible, mais ne détermine pas l’implémentation redéfinie appelée.

2. Quelle instruction illustre un upcasting en Java ?

Animal animal = new Chien();
Animal animal = new Animal();
Chien chien = new Animal();
Chien chien = new Chien();

Animal animal = new Chien();

Explication

L’upcasting consiste à référencer un objet de sous-classe, ici un Chien, avec une référence de sa super-classe, Animal. Une création directe d’Animal ou de Chien ne constitue pas une conversion vers le type général.

3. Quelle caractéristique décrit correctement une classe abstraite ?

Elle doit être instanciée avant que ses sous-classes puissent être utilisées.
Elle interdit les méthodes normales afin de préserver son caractère abstrait.
Elle peut définir un constructeur, mais ne peut pas être instanciée directement.
Elle ne peut contenir que des méthodes abstraites sans attribut ni constructeur.

Elle peut définir un constructeur, mais ne peut pas être instanciée directement.

Explication

Une classe abstraite représente un concept général et peut contenir des attributs, un constructeur, des méthodes normales et des méthodes abstraites, sans pouvoir être instanciée directement. Elle se distingue donc d’une structure limitée aux méthodes sans implémentation.

4. Que doit faire une sous-classe concrète qui hérite d’une classe abstraite comportant plusieurs méthodes abstraites ?

Elle doit supprimer les méthodes abstraites héritées de la classe parente.
Elle doit remplacer ces méthodes par des constructeurs correspondants.
Elle doit conserver ces méthodes sans corps dans sa déclaration.
Elle doit implémenter toutes ces méthodes abstraites.

Elle doit implémenter toutes ces méthodes abstraites.

Explication

Une sous-classe concrète doit fournir une implémentation pour chacune des méthodes abstraites héritées. Si elle ne le fait pas, elle doit elle-même être déclarée abstraite, plutôt que laisser ces méthodes non implémentées dans une classe concrète.

5. Qu'est-ce que le polymorphisme en programmation orientée objet ?

Le polymorphisme permet à une même référence de désigner des objets de types différents, le comportement dépendant de l'objet réel.
Le polymorphisme est une technique qui permet de créer des objets de plusieurs classes en même temps.
Le polymorphisme consiste à convertir un objet d'une classe en un objet d'une autre classe.
Le polymorphisme est une méthode pour optimiser la mémoire en partageant des objets similaires.

Le polymorphisme permet à une même référence de désigner des objets de types différents, le comportement dépendant de l'objet réel.

Explication

Le polymorphisme permet à une même référence de désigner des objets de types différents, ce qui permet d'exécuter des méthodes redéfinies selon l'objet réel. La première option décrit précisément cette capacité, contrairement aux autres qui sont incorrectes ou hors sujet.

6. Quelle annotation en Java signale qu'une méthode fournit une nouvelle implémentation d'une méthode héritée ?

@Implement
@Method
@Abstract
@Override

@Override

Explication

L'annotation @Override indique qu'une méthode redéfinit une méthode héritée d'une super-classe. La mention @Abstract est incorrecte car elle n'existe pas en Java, et les autres options ne sont pas des annotations Java standard.

7. Quel est le rôle principal d'une interface en programmation orientée objet ?

Fournir une implémentation par défaut pour des méthodes communes à plusieurs classes.
Gérer l'héritage en permettant à une classe d'hériter des attributs et méthodes d'une autre classe.
Définir un contrat que les classes doivent respecter en spécifiant les services à fournir sans en préciser l'implémentation.
Permettre l'héritage multiple en Java, en permettant à une classe d'hériter de plusieurs classes.

Définir un contrat que les classes doivent respecter en spécifiant les services à fournir sans en préciser l'implémentation.

Explication

Une interface sert de contrat qui définit les services qu'une classe doit fournir, sans en préciser l'implémentation. Contrairement à l'héritage de classes, une classe peut implémenter plusieurs interfaces, ce qui permet de respecter plusieurs contrats.

8. En quoi la différence principale entre une classe abstraite et une interface réside-t-elle dans leur rôle et leur capacité d'héritage ?

Une classe abstraite ne peut pas être héritée par d'autres classes, contrairement à une interface qui peut être implémentée par plusieurs classes.
Une classe abstraite doit obligatoirement contenir des méthodes abstraites, alors qu'une interface ne peut contenir que des méthodes normales.
Une classe abstraite ne peut contenir que des méthodes abstraites, alors qu'une interface peut contenir des méthodes normales et des attributs.
Une classe abstraite sert de base commune avec des méthodes et attributs pouvant être partagés, tandis qu'une interface définit un contrat que les classes doivent respecter sans fournir d'implémentation.

Une classe abstraite sert de base commune avec des méthodes et attributs pouvant être partagés, tandis qu'une interface définit un contrat que les classes doivent respecter sans fournir d'implémentation.

Explication

Une classe abstraite sert de modèle avec des attributs et méthodes pouvant être partagés, alors qu'une interface définit uniquement un contrat sans implémentation. La différence principale réside dans leur rôle et leur capacité d'héritage, la classe abstraite étant une base concrète, tandis que l'interface impose un comportement à respecter.

9. Quelle est la conséquence principale de l'utilisation d'une collection de type List par rapport à une Map en termes d'organisation des données ?

Une List maintient un ordre et autorise les doublons, tandis qu'une Map associe une clé unique à une valeur.
Une List ne permet pas d'accéder aux éléments par indice, contrairement à une Map.
Une List est toujours non ordonnée, alors qu'une Map garantit un ordre spécifique.
Une List ne peut contenir que des objets de même type, alors qu'une Map peut contenir des types variés.

Une List maintient un ordre et autorise les doublons, tandis qu'une Map associe une clé unique à une valeur.

Explication

Une List est une collection ordonnée qui permet les doublons, ce qui facilite la gestion d'une séquence d'éléments. La Map, en revanche, associe chaque clé à une valeur, ce qui est utile pour rechercher rapidement une valeur via sa clé.

10. Comment peut-on utiliser une implémentation de liste pour stocker et accéder efficacement à une grande quantité d'objets dans une application Java ?

En évitant d'utiliser des listes, car elles ne sont pas adaptées pour stocker de nombreux objets.
En utilisant uniquement ArrayList, car elle est toujours plus performante que LinkedList pour toutes les opérations.
En choisissant entre ArrayList et LinkedList en fonction des opérations principales prévues, comme l'accès par indice ou l'insertion/suppression.
En combinant plusieurs listes pour augmenter la capacité de stockage, sans se soucier de leur type d'implémentation.

En choisissant entre ArrayList et LinkedList en fonction des opérations principales prévues, comme l'accès par indice ou l'insertion/suppression.

Explication

L'utilisation d'ArrayList ou LinkedList dépend des opérations prioritaires : ArrayList est efficace pour l'accès par indice, tandis que LinkedList est préférable pour les insertions et suppressions. La sélection appropriée optimise la performance selon le contexte.

11. Quelle caractéristique principale distingue une Map d'une Collection en Java ?

Une Map associe une clé unique à une valeur, tandis qu'une Collection stocke simplement des objets sans association spécifique.
Une Map permet de stocker des objets dans un ordre précis, contrairement à une Collection.
Une Map ne peut contenir que des paires clé-valeur, alors qu'une Collection ne peut contenir que des objets simples.
Une Map est toujours synchronisée, alors qu'une Collection ne l'est pas.

Une Map associe une clé unique à une valeur, tandis qu'une Collection stocke simplement des objets sans association spécifique.

Explication

Une Map en Java associe une clé unique à une valeur, ce qui permet une recherche efficace par clé. Contrairement à une Collection, elle ne stocke pas simplement des objets, mais des paires clé-valeur.

Révisez avec les flashcards

Mémorisez les réponses avec 11 flashcards sur POO Java : polymorphisme et collections.

Qu'est-ce que le polymorphisme en programmation orientée objet ?

Une même référence peut désigner des objets de types différents avec comportement dépendant de l'objet réel.

Que signale l'annotation @Override en Java ?

Qu'une méthode redéfinit une méthode héritée avec une nouvelle implémentation.

Qu'est-ce qu'une classe abstraite en programmation orientée objet ?

Une classe abstraite représente un concept général et ne peut pas être instanciée directement.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur POO Java : polymorphisme et collections.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM