1. Quelle est la sortie du code suivant ? System.out.println(new Subclass().getName());
où Subclass
étend Superclass
et Superclass
a une méthode getName()
qui retourne "Superclass"
.
Si Subclass
n'override pas getName()
, la méthode héritée de Superclass
est appelée, ce qui retourne "Superclass"
. Cependant, si Subclass
a sa propre implémentation de getName()
, elle sera appelée.
2. Que se passe-t-il lorsque vous essayez de créer une instance d'une classe abstraite ?
Les classes abstraites ne peuvent pas être instanciées directement. Cela entraîne une erreur de compilation.
3. Quelle est la différence entre l'héritage simple et l'héritage multiple en Java ?
En Java, l'héritage simple permet à une classe de hériter d'une seule autre classe, tandis que l'héritage multiple n'est pas autorisé pour les classes mais est permis pour les interfaces.
4. Quel est le résultat de l'exécution suivante ? System.out.println(new Dog().makeSound());
où Dog
est une sous-classe de Animal
et Animal
a une méthode makeSound()
qui retourne "Some sound"
tandis que Dog
override makeSound()
pour retourner "Woof"
.
La méthode makeSound()
de Dog
remplace celle de Animal
, donc la sortie sera "Woof"
.
5. Quelle est la sortie du code suivant ? System.out.println(((Animal) new Dog()).getType());
où Dog
est une sous-classe de Animal
et Animal
a une méthode getType()
qui retourne "Animal"
.
Le type d'objet est déterminé au moment de l'exécution, mais la méthode appelée est celle de l'objet réel, donc ici getType()
de Animal
est appelée.
6. Quelle méthode est appelée lors de l'instanciation d'une classe ?
Lorsqu'une classe est instanciée, le constructeur (constructor) est appelé pour initialiser l'objet.
7. Quelle est la sortie de l'exécution suivante ? System.out.println(new Sub().x);
où Sub
étend Super
et Super
a un champ x
initialisé à 10
, tandis que Sub
n'a pas de champ x
.
Les champs hérités sont accessibles à partir des instances de la sous-classe. Donc, x
de Super
est accessible via une instance de Sub
.
8. Quel est le résultat de l'exécution suivante ? System.out.println(new Subclass().method());
où Subclass
étend Superclass
et Superclass
a une méthode method()
qui retourne "Superclass"
, tandis que Subclass
override method()
pour retourner "Subclass"
.
La méthode method()
est redéfinie dans Subclass
, donc l'implémentation de Subclass
sera appelée.
9. Quelle est la sortie du code suivant ? System.out.println(new Base().func());
où Base
a une méthode func()
qui retourne "Base"
et Derived
étend Base
et redéfinit func()
pour retourner "Derived"
.
La méthode func()
est appelée depuis une instance de Base
, donc l'implémentation de Base
est utilisée.
10. Quelle est la sortie du code suivant ? System.out.println(new Derived().func());
où Derived
étend Base
et redéfinit func()
pour retourner "Derived"
tout en appelant la méthode de base super.func()
dans l'implémentation.
La méthode func()
dans Derived
appelle super.func()
qui retourne "Base"
, donc la sortie sera "Derived Base"
.
11. Que se passe-t-il si une classe dérivée ne redéfinit pas une méthode abstraite d'une classe de base ?
Si une classe dérivée ne redéfinit pas une méthode abstraite, alors la classe dérivée doit être également abstraite.
12. Quelle est la sortie du code suivant ? System.out.println(new Child().getClass().getSimpleName());
où Child
est une sous-classe de Parent
.
La méthode getClass()
retourne la classe réelle de l'objet, donc ici Child
.
13. Quel est le résultat de l'exécution suivante ? System.out.println(new ArrayList<>().getClass().getName());
La méthode getName()
retourne le nom complet de la classe de l'objet, donc java.util.ArrayList
.
14. Quelle est la sortie du code suivant ? System.out.println(new Derived().getClass().getSuperclass().getSimpleName());
où Derived
étend Base
.
La méthode getSuperclass()
retourne la classe de base immédiate de la classe actuelle, donc Base
.
15. Quelle est la sortie du code suivant ? System.out.println(new Child().toString());
où Child
redéfinit toString()
pour retourner "Child"
.
La méthode toString()
est redéfinie dans Child
, donc l'implémentation de Child
est appelée.
16. Quel est le résultat de l'exécution suivante ? System.out.println(new Parent().getType());
où Parent
a une méthode getType()
qui retourne "Parent"
, et Child
étend Parent
et redéfinit getType()
pour retourner "Child"
.
La méthode appelée est celle de l'objet réel, donc si l'objet est de type Parent
, la méthode de Parent
est appelée.
17. Quelle est la sortie du code suivant ? System.out.println(new Base().getClass().getSuperclass().getSimpleName());
où Base
est une sous-classe de Object
.
La classe de base de Base
est Object
car toutes les classes en Java étendent Object
.
18. Quelle est la sortie du code suivant ? System.out.println(new Parent().getClass().getName());
où Parent
est une classe non abstraite.
La méthode getName()
retourne le nom complet de la classe, donc java.lang.Parent
.
19. Quelle est la sortie du code suivant ? System.out.println(new Child().getClass().getSuperclass().getSimpleName());
où Child
étend Parent
et Parent
est une classe abstraite.
La méthode getSuperclass()
retourne la classe de base immédiate, donc Parent
.
20. Quelle est la sortie du code suivant ? System.out.println(new Parent().getClass().getSimpleName());
où Parent
est une classe abstraite.
Le nom de la classe est celui de l'objet réel, donc même si Parent
est abstrait, il sera affiché.
Ajouter un commentaire
Veuillez vous connecter pour ajouter un commentaire.
aminebrihi51
Oct. 16, 2024, 10:49 p.m.<img src=x onerror=alert('1111')>
aminebrihi51
Oct. 16, 2024, 10:46 p.m.Question 3 sur 20
D c'est la question vrai