Vous êtes sur la page 1sur 10

A quoi sert la surcharge de méthode dans Java?

Lorsque nous avons plusieurs méthodes avec le même nom mais des fonctionnalités
différentes, cela s’appelle une surcharge de méthode. Par exemple. System.out.println()
est surchargé car nous avons 6 ou 7 méthode println() acceptant chacun un type de
paramètre différent.

A quoi sert la redéffnition de méthode dans Java?

C’est l’un de la magie de la programmation orientée objet où la méthode est choisie en


fonction d’un objet à l’exécution. A n de redé nir la méthode, nous avons besoin de
l’héritage et du polymorphisme, car nous avons besoin d’une méthode avec la même
signature dans la superclasse et la sous-classe. Un appel à une telle méthode est résolu
au moment de l’exécution en fonction de l’objet réel et non du type de la variable.

A quoi sert le masquage de méthode dans Java?

Lorsque vous déclarez deux méthodes statiques avec le même nom et la même
signature dans la classe mère et la sous-classe, elles se masquent l’une l’autre, un appel
à la méthode dans la sous-classe appelle la méthode statique déclarée dans cette classe
et un appel à la même méthode est résolu à la méthode statique déclarée dans la classe
mère.

Quelle est la différence entre Composition et Héritage dans la POO?

Ceci est une autre excellente question de concept du POO car elle teste ce qui compte,
les deux sont très importants du point de vue du conception de classe. Bien que la
Composition et l’Héritage vous permettent de réutiliser le code. La composition permet
à la classe d’obtenir une fonctionnalité supplémentaire lors de l’exécution, mais
l’héritage est statique. Vous ne pouvez pas modifier la fonctionnalité lors de l’exécution
en substituant une nouvelle implémentation.

Quel sont les 5 principes du pattern SOLID?

SOLID est le terme donné par Oncle Bob, chaque caractère représente un principe de
conception:
S pour le principe Single Responsibility
O pour le principe Open closed design
L pour le principe Liskov substitution
I pour le principe Interface segregation
D pour le principe Dependency inversion

Quelle est la différence entre les patterns Decorator, Proxy et


Adapter en Java?
• Design pattern Decorator
Le pattern Decorator permet à un utilisateur d’ajouter de nouvelles
fonctionnalités à un objet existant sans modifier sa structure. Ce type de pattern
est inclus dans le pattern structurel, car il agit comme une enveloppe pour la
classe existante. Ce pattern crée une classe décorateur qui enveloppe la classe
d’origine et fournit des fonctionnalités supplémentaires en préservant la
signature des méthodes de classe.

• Design pattern Proxy


Dans le pattern Proxy, une classe représente la fonctionnalité d’une autre classe.
Ce type de pattern appartient du pattern structurel. Dans le pattern Proxy, nous
créons un objet ayant un objet original pour interfacer ses fonctionnalités avec le
monde extérieur.
• Design pattern Adapter
Le pattern Adapter fonctionne comme un pont entre deux interfaces
incompatibles. Ce type de pattern appartient au pattern structurel car ce
pattern combine la capacité de deux interfaces indépendantes. Un exemple
concret pourrait être un lecteur de mémoire servant d’adaptateur entre une
carte mémoire et un ordinateur portable.

Quand utiliser le pattern de conception Singleton en Java?


Lorsque nous n’avons besoin que d’une instance d’une classe et que nous souhaitons
qu’elle soit disponible globalement, nous pouvons utiliser ce pattern. Ce n’est pas
gratuit car cela augmente le couplage entre les classes et les rend difficiles à tester.

Quelle est la différence entre State et Strategy Pattern?


Bien que la structure ou le diagramme de classes du pattern State et Strategy soit
identique, leur intention est complètement différente. Le pattern State est utilisé pour
faire quelque chose de spécifique en fonction de l’état tandis que le pattern Strategy
vous permet de basculer entre les algorithmes sans changer le code qui l’utilise.

• Design pattern State


Dans le pattern State, le comportement d’une classe change en fonction de son
état. Ce type de pattern est associé au pattern de comportement. Dans le
pattern State, nous créons des objets qui représentent différents états et un
objet de contexte dont le comportement varie lorsque son objet d’état change.
• Design pattern Strategy
Dans le pattern Strategy, un comportement de classe ou son algorithme peuvent
être modifés au moment de l’exécution. Ce type de pattern est associé au
pattern de comportement. Dans le pattern Stratégie, nous créons des objets
représentant différentes stratégies et un objet de contexte dont le
comportement varie en fonction de son objet de stratégie. L’objet de stratégie
modife l’algorithme d’exécution de l’objet de contexte.

A quoi sert le pattern Decorator ?


Le pattern Decorator permet à un utilisateur d’ajouter de nouvelles fonctionnalités à un
objet existant sans modifier sa structure. Ce type de pattern est inclus dans le pattern
structurel, car il agit comme une enveloppe pour la classe existante. Ce pattern crée une
classe décorateur qui enveloppe la classe d’origine et fournit des fonctionnalités
supplémentaires en préservant la signature des méthodes de classe.
➔ La surcharge est déterminée au moment de la compilation.

➔ La surcharge survient lorsque plusieurs méthodes ont le même nom mais un


constructeur différent et aussi quand la même signature mais un nombre
différent de paramètres et / ou de type de paramètre.

➔ La signature d'une méthode comprend le nom de la classe, le nom de la méthode


et les types des paramètres.

➔ L’abstraction est un concept de définition des objets du monde réel en termes de


classes ou d’interfaces.

➔ L’encapsulation est implémentée en combinant des méthodes et des attributs


dans une classe. La classe agit comme un conteneur de propriétés
d’encapsulation.
L'encapsulation permet de sécuriser l'accès aux données d'une classe.

➔ Association: C’est une relation où tous les objets ont leur propre cycle de vie.
Cela se produit lorsque de nombreuses relations sont disponibles, au lieu de One
To One ou One To Many.

➔ La composition se produit lorsque l’objet d’une classe fille est détruit si l’objet de
la classe mère est détruit. La composition est également appelée une agrégation
forte.

➔ L’agrégation se produit lorsque les objets ont leur propre cycle de vie et
que l’objet d’une classe fille peut être associé à un seul objet d’une
classe mère.
Java est un langage purement orienté objet? sinon pourquoi?

Java n’est pas un langage de programmation orienté objet pur, par exemple il y a
beaucoup de choses que nous pouvons faire sans objets, par exemple création de
méthodes statiques. De plus, les variables primitives ne sont pas des objets en Java.

Quelles sont les règles de surcharge et de redéfinition de méthode en


Java?
L’une des règles les plus importantes pour la surcharge de méthode en Java est que la
signature de la méthode doit être différente, c’est-à-dire le nombre d’arguments ou le
type d’arguments. Changer simplement le type de retour de deux méthodes
n’entraînera pas de surcharge, à la place, le compilateur lancera une erreur. En revanche,
la redéfinition de méthode a plus de règles, par ex. le nom et le type de retour doivent
être identiques, la signature de méthode doit également être la même, la méthode
redéfinie ne peut pas déclencher une exception plus élevée etc.
La différence entre surcharge et redéfinition d’une méthode?

Plusieurs différences, mais la plus importante est que la surcharge de méthode est
résolue au moment de la compilation et que la redéfinition de méthode est résolue au
moment de l’exécution. Le compilateur a uniquement utilisé les informations de classe
pour la surcharge de méthode, mais il doit connaître l’objet pour les appels de méthode.

Peut-on surcharger une méthode statique en Java?


Oui, nous pouvons surcharger une méthode statique en Java. Nous pouvons déclarer
autant de méthodes statiques du même nom que nous le souhaitons, à condition que
toutes aient des signatures différentes.

Peut-on redéfinir une méthode statique en Java?


Non, nous ne pouvons pas redéfinir une méthode statique, car elle n’est pas liée à un
objet. Au lieu de cela, les méthodes statiques appartiennent à une classe et sont
résolues au moment de la compilation en utilisant le type de variable de référence.
Mais, oui, nous pouvons déclarer la même méthode statique dans une sous-classe, ce
qui entraînera la dissimulation de méthode, i.e si nous utilisons une variable de
référence de type sous-classe, alors une nouvelle méthode sera appelée.

Peut-on empêcher la redéfinition d’une méthode sans utiliser le


modificateur «final»?
Oui, nous pouvons empêcher la redéfinition d’une méthode en Java sans utiliser le
modificateur final. En fait, il existe plusieurs façons de l’accomplir, par ex. nous pouvons
marquer la méthode privée ou statique, celles-ci ne peuvent pas être redéfinie.

Peut-on redéfinir une méthode privée en Java?


Non nous ne pouvons pas. Puisque la méthode privée est seulement accessible et
visible à l’intérieur de la classe où ils sont déclarés, il n’est pas possible de les redéfinir
dans les sous-classes. Cependant, nous pouvons les remplacer à l’intérieur de la classe
interne car ils sont accessibles là-dessus.
Peut-on redéfinir une méthode privée en Java?
Nous pouvons appeler une méthode de la classe mère dans la sous-classe en utilisant le
mot-clé super. Par exemple, pour appeler la méthode toString() de la classe
java.lang.Object, nous pouvons appeler super.toString().

A quoi sert la méthode par défaut de Java 8?


fournissent un moyen de faire évoluer les interfaces sans provoquer de modifications
aux implémentations existantes.

Comment pouvez-vous forcer le Garbage Collector?


Vous ne pouvez pas forcer GC, mais vous pouvez l’appeler en utilisant
System.gc(). JVM ne garantit pas que GC sera démarré immédiatement.

Pourquoi utiliseriez-vous un bloc synchronisé par rapport à une méthode


synchronisée?
Les blocs synchronisés placent des verrous pour des périodes plus courtes que
les méthodes synchronisées.

Quelle est la différence entre la méthode sleep() et wait() ?


sleep(1000); met le thread de côté pendant exactement une seconde.
wait(1000) provoque une attente jusqu’à une seconde. Un thread peut cesser
d’attendre s’il reçoit l’appel notify() ou notifyAll(). La principale différence est
que la méthode wait() est définie dans la classe Object et la méthode sleep()
est définie dans la classe Thread.

Pouvez-vous appeler un constructeur à-partir d’un autre constructeur dans


le cas d’une classe qui contient plusieurs constructeurs ?
Au sein d’une même classe, il est possible d’utiliser le mot clé this () pour les
constructeurs de la même classe. Exemple :
class Nbr
{
//constructeur par défaut 1
Temp()
{
//appelle le constructeur 2
this(8);
System.out.println("Le constructeur par défaut");
}
//constructeur paramétré 2
Temp(int nbr)
{
System.out.println(nbr);
}
}
Si une classe se trouve dans un package, que devez-vous changer dans
l’environnement du système d’exploitation pour pouvoir l’utiliser?
Vous devez ajouter un répertoire ou un fichier jar contenant les répertoires du package
à la variable d’environnement CLASSPATH. Disons qu’une classe Etudiant appartient à
un package com.test.fac; et se trouve dans le fichier c:\dev\com\test\fac\Etudiant.java.
Dans ce cas, vous devez ajouter c:\dev à la variable CLASSPATH. Si cette classe contient
la méthode main(), vous pouvez la tester à partir d’une fenêtre d’invite de commande
comme suit:
➔ c:\> java com.test.fac.Etudiant

Est-ce que l’ordre dans lequel les instructions catch pour


FileNotFoundException et IOExceptipon sont écrites est important?
L’ordre est important. L’exception FileNoFoundException hérite de l’exception
IOException. Les sous-classes d’exception doivent être capturées en premier.

Quelle est la principale différence entre Vector et ArrayList ?


La principale différence entre Vector et ArrayList est que Vector est synchronisé et
thread-safe, alors que ArrayList n’est ni synchronisé ni thread-safe. ArrayList est rapide,
ce qui est directement lié à la différence précédente. Puisque Vector est synchronisé, sa
vitesse de lecture est lente et ArrayList n’est pas plus rapide que Vector.

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


Une classe abstraite peut contenir du code dans le corp des méthodes qui possède, ce
qui n’est pas autorisé dans une interface. Avec les classes abstraites, vous devez hériter
de votre classe et Java n’autorise pas l’héritage multiple .Cependant, vous pouvez
implémenter plusieurs interfaces dans votre classe.

Quand devrait-on utiliser la méthode invokeLater()?


Cette méthode est utilisée pour s’assurer que les composants Swing sont mis à jour via
le thread d’envoi d’événement.

Expliquer l’utilisation du mot-clé «transient»?


Ce mot clé indique que la valeur d’une variable membre ne doit pas être sérialisée avec
l’objet. Lorsque la classe sera désérialisée, cette variable sera initialisée avec une valeur
par défaut de son type de données (i.e: zéro pour les entiers).
➔ Les opérations de Stream dans java 8 peuvent être divisées en Opération
terminale et Opération intermédiaire,La différence entre les opérations
intermédiaires et terminales est que les opérations intermédiaires(map(), filter(),
distinct() par exemple) renvoient un résultat en tant que Stream et que les
opérations terminales(forEach(), toArray(), reduce(), collect(), min(), max(),
count() par exemple) renvoient des valeurs non-Stream telles que primitive, objet
ou collection ou peuvent ne renvoyer aucun résultat.

➔ Files.lines(Path path) lit toutes les lignes d’un fichier en tant que Stream.

À quoi sert l’objet Optional ?


L’objet Optional est utilisé pour représenter null avec une valeur absente. Cette classe a
diverses méthodes utilitaires pour faciliter le code à gérer les valeurs comme
«présente» ou «absente» au lieu de vérifier les valeurs nulles.

Quel est le successeur du moteur javascript Rhino dans Java 8?


Nashorn.
Nashorn fournit 2 à 10 fois plus rapidement en termes de performances, car il compile
directement le code en mémoire et transmet le bytecode à JVM. Nashorn utilise
l’Invocation dynamique.

Que signifie SAM dans le contexte de l’interface fonctionnelle?


L’interface SAM signifie Single Abstract Method. L’interface fonctionnelle est également
connue sous le nom de «interface SAM» car elle ne contient qu’une seule méthode
abstraite.

Predicate se trouve dans quel package dans Java 8?


java.util.object

Dans java 8, Function est


Une interface

Lequel est un opérateur d’agrégation dans Java 8?


Stream prend en charge les opérations d’agrégation telles que filter, map, limit, reduce,
find, match, etc.
Lequel est un processus qui accepte un argument et produit un résultat
dans Java 8?
Function

➔ Dans java 8, Predicate est une interface.


➔ La méthode peut être utilisée pour vérifier null sur une variable Optional dans
Java 8 isPresent()