0% ont trouvé ce document utile (0 vote)
3 vues20 pages

QCM Programmation Java

Transféré par

eliseebeguedou002
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues20 pages

QCM Programmation Java

Transféré par

eliseebeguedou002
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

QCM 1

1) Java est un langage…


(a) Interprété
(b) Compilé
(c) Les deux
(d) Ni l'un, ni l'autre

2) Comment indiquer qu'une classe A hérite d'une classe B ?


(a) class A ::B
(b) class A extends B
(c) class A implements B
(d) class A inherit B
QCM 2

1) Combien d’instances de la classe A créera le code


suivant?
A x,y,z;
x=new A();
y=x;
z=new A();
(a) Aucune
(b) Trois
(c) Deux
2) Indiquer les mots qui n'a pas de place en java
(a) transient transient permet d'interdire la sérialisation de
(b) select certaines variables d'une classe (cf plus loin).

(c) for volatile est utilisé sur les variables qui peuvent être
(d) volatile modifiées de manière asynchrone.
QCM 3
1) Les attributs static peuvent être
(a) Déclarer private
(b) Utiliser sans aucune instanciation de la classe
(c) (a) et (b)
(d) Aucune des deux
2) Les méthodes static peuvent
(a) être surchargées en méthodes d'instances
(b) non c'est illicite.
(c) accéder direct aux méthodes qui ne sont pas statiques et qui sont définies
dans la même classe.
3) Indiquer les instructions qui sont syntaxiquement incorrecte?
(a) Person[] p = new Person[5];
(b) Person[5] p;
(c) Person[] p [];
(d) Person p[][] = new Person[2][];
QCM 4
Pour la classe B définie comme suit:
class B {
public B(){[Link](”Bonjour ”);};
public B(String nom) {
this();
[Link](” c'est moi ”+nom);}
}
1) Qu’affichera l’instruction suivante : B monB=new B('' java '') ?
(a) erreur de compilation
(b) erreur d’exécution
(c) c'est moi java Bonjour
(d) Bonjour c'est moi java

2) la syntaxe [Link].x est impossible en java


(a) Faux (b) vrai
QCM 4
class ClasseA { double x ; }
class ClasseB extends ClasseA { int x ; }
class ClasseC extends ClasseB { char x ; }

1) Dans une méthode de la ClasseC, quelle variable est désignée par


x : (utiliser 1 : double x 2 : int x 3 : char x)
(a) x : 3
(b) this.x : 3
(c) super.x : 2

(d) ((ClasseB) this).x : 3

(e) ((ClasseA) this).x : 3


QCM 5
class ClasseA{...
public void affiche(){
[Link]("je suis un objet de ClasseA") ;}
}
class ClasseB extends ClasseA{...
public void affiche(){
[Link]("je suis un objet de ClasseB") ; } }
1) Quel est le résultat de l'exécution du programme suivant ?
public class ClasseTest{
public void main(String [] args) {
ClasseA a = new ClasseB() ;
[Link]() ;
}}

(a) je suis un objet de ClasseA


(b) je suis un objet de ClasseB
QCM 6

1) Indiquer l'affirmation correcte:


(a) La surcharge correspond à avoir des méthodes de
même nom mais de profils différents dans une
même classe

(b) La redéfinition correspond à avoir deux méthodes


de même nom et de même profils dans deux
classes hérités

(c) Les deux phrase sont fausses.


Méthode final
● Si une méthode est déclarée final, celle-ci ne peut
pas être redéfinie
(a) Vrai (b) Faux
● Réponse (a), cela est important en terme de
sécurité. Donner un exemple ?
Classe final

● Si une classe A est déclarée final, il est


impossible de créer des sous-classes héritant
de A
(a) Vrai (b) Faux
● Réponse (a), mais pour quoi ?
– Mêmes raisons que pour les méthodes
Héritage Multiple

● Java permit l'héritage Multiple


(a) Vrai (b) Faux

● Réponse (b) car si l'on hérite de deux méthodes


ayant même signature dans deux super classes,
quelle code doit-on choisir ?
● Performance en cas de sous-typage
Héritage Multiple (Solution)

● Il n'y a pas d'héritage multiple en Java


● Est-il possible d'émuler l'héritage multiple? Si
oui par qu'il moyenne ?

● Java définit des interfaces et permet à une


classe d'implémenté plusieurs interfaces

● Une interface définit un type sans code


Interface
● Est-Il possible d’instancier une interface ? Pour
quoi ?
● Non, car l'interface ne définie pas le code de
ses méthodes
Implantation d'interface
● Comment peut-on implémenté un interface java ?
Par la déclaration d'une classe qui fournira le code
pour l'ensemble des méthodes abstraites
Quiz

@override permet de :
(a) Générer la documentation de méthode
(b) D'indiquer au compilateur de générer une
erreur si une méthode ne redéfinit pas une
autre
(c) D'indiquer au compilateur de générer une
erreur si une méthode ne recharge pas une
autre
(d) Aucune de ces affirmations.
Quiz

Indique si le code suivant compile ou non ?

public interface Constants{


public static int MAX_SIZE = 100 ;
public static String ok = ''OK'';
}

(a) compile (b) Erreur de compilation


Quiz

Laquelle des instructions suivantes est correcte ?


a) variable sous-classe = variable super-classe ;
b) variable super-classe = variable sous-classe ;

Réponse (b), car les sous classes héritent par


transitivité les types des super classes.
Quiz

Considérons la hiérarchie de
classes suivante :

Et l’instanciation :
Cours cours[i] = new
Informatique(''java'', ….)

Discuter l'instruction suivant :


if (cours[i] instanceof Pratique)
[Link](cours[i].langage);
solution

● Un message d’erreur lors de la compilation :


Cannot resolve symbol
symbol : variable langage
location: class Cours
[Link](cours[i].langage);
● Le compilateur voit que cours[i] est déclaée comme un
Cours, Il n’est donc pas sûr que langage existe pour
l’objet

Code correct :
if (cours[i] instanceof Pratique)
[Link](((Pratique)cours[i]).langage);
Quiz class SuperClasse {
SuperClasse() {
}
}

class ExplicitCast { class SousClasse extends SuperClasse {


public static void main(String[] args) { int v;
SousClasse() {
SuperClasse sup = new SousClasse();
super();
SousClasse sous; }
sous = sup; // ok faux void m1() {
sous = (SousClasse)sup; // ok faux }
m2(sup); // ok faux }
m2((SousClasse)sup); // ok faux
[Link](sup.v); // ok faux
[Link](((SousClasse)sup).v); // ok faux
sup.m1(); // ok faux
((SousClasse)sup).m1(); // ok faux
}
static void m2 (SousClasse sous2) {
}
}
Dans : | A | B | C | D | E |
---------------------------------------------------------------------
ChampPubl | oui | oui | oui | oui | oui |
champProt | oui | oui | oui | oui | - |
ChampDef | oui | --- | oui | oui | - |
ChampPriv | oui | --- | --- | --- | --- |

Vous aimerez peut-être aussi