Vous êtes sur la page 1sur 20

QCM 1

1) Java est un langage


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

2) Comment indiquer qu'une classe A hrite 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 dinstances de la classe A crera 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 (b) select (c) for (d) volatile
transient permet d'interdire la srialisation de certaines variables d'une classe (cf plus loin).
volatile est utilis sur les variables qui peuvent tre modifies de manire asynchrone.

QCM 3
1) Les attributs static peuvent tre
(a) Dclarer private (b) Utiliser sans aucune instanciation de la classe (c) (a) et (b) (d) Aucune des deux

2) Les mthodes static peuvent


(a) tre surcharges en mthodes d'instances (b) non c'est illicite. (c) accder direct aux mthodes qui ne sont pas statiques et qui sont dfinies dans la mme 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 dfinie comme suit: class B { public B(){System.out.print(Bonjour );}; public B(String nom) { this(); System.out.println( c'est moi +nom);} }
1) Quaffichera linstruction suivante: B monB=new B('' java '')? (a) erreur de compilation (b) erreur dexcution (c) c'est moi java Bonjour (d) Bonjour c'est moi java 2) la syntaxe super.super.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 mthode de la ClasseC, quelle variable est dsigne par x : (utiliser 1: double x 2: int x 3: char x)

(a) x : (b) this.x :

3 3 2 3 3

(c) super.x :

(d) ((ClasseB) this).x : (e) ((ClasseA) this).x :

QCM 5
class ClasseA{... public void affiche(){ System.out.println("je suis un objet de ClasseA") ;} } class ClasseB extends ClasseA{... public void affiche(){ System.out.println("je suis un objet de ClasseB"); } } 1) Quel est le rsultat de l'excution du programme suivant ? public class ClasseTest{ public void main(String [] args) { ClasseA a = new ClasseB() ; a.affiche() ; }}
(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 mthodes de mme nom mais de profils diffrents dans une mme classe (b) La redfinition correspond avoir deux mthodes de mme nom et de mme profils dans deux classes hrits (c) Les deux phrase sont fausses.

Mthode final

Si une mthode est dclare final, celle-ci ne peut pas tre redfinie
(a) Vrai (b) Faux

Rponse (a), cela est important en terme de scurit. Donner un exemple?

Classe final

Si une classe A est dclare final, il est impossible de crer des sous-classes hritant de A
(a) Vrai (b) Faux

Rponse (a), mais pour quoi? Mmes raisons que pour les mthodes

Hritage Multiple

Java permit l'hritage Multiple


(a) Vrai

(b) Faux

Rponse (b) car si l'on hrite de deux mthodes ayant mme signature dans deux super classes, quelle code doit-on choisir ? Performance en cas de sous-typage

Hritage Multiple (Solution)


Il n'y a pas d'hritage multiple en Java Est-il possible d'muler l'hritage multiple? Si oui par qu'il moyenne? Java dfinit des interfaces et permet une classe d'implment plusieurs interfaces Une interface dfinit un type sans code

Interface

Est-Il possible dinstancier une interface? Pour quoi? Non, car l'interface ne dfinie pas le code de ses mthodes

Implantation d'interface

Comment peut-on implment un interface java? Par la dclaration d'une classe qui fournira le code pour l'ensemble des mthodes abstraites

Quiz
@override permet de: (a) Gnrer la documentation de mthode (b) D'indiquer au compilateur de gnrer une erreur si une mthode ne redfinit pas une autre (c) D'indiquer au compilateur de gnrer une erreur si une mthode 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 ; Rponse (b), car les sous classes hritent par transitivit les types des super classes.

Quiz
Considrons la hirarchie de classes suivante:

Et linstanciation: Cours cours[i] = new Informatique(''java'', .) Discuter l'instruction suivant:


if (cours[i] instanceof Pratique) System.out.print(cours[i].langage);

solution

Un message derreur lors de la compilation :

Cannot resolve symbol symbol : variable langage location: class Cours System.out.print(cours[i].langage);

Le compilateur voit que cours[i] est dclae comme un Cours, Il nest donc pas sr que langage existe pour lobjet
Code correct : if (cours[i] instanceof Pratique) System.out.print(((Pratique)cours[i]).langage);

Quiz

class SuperClasse { SuperClasse() { } }

class SousClasse extends SuperClasse { class ExplicitCast { int v; public static void main(String[] args) { 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 System.out.print(sup.v); // ok faux System.out.print(((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 | --- | --- | --- | --- |