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(){[Link](Bonjour );}; public B(String nom) { this(); [Link]( 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 [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 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(){ [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 rsultat de l'excution 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 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) [Link](cours[i].langage);
solution
Un message derreur lors de la compilation :
Cannot resolve symbol symbol : variable langage location: class Cours [Link](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) [Link](((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 [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 | --- | --- | --- | --- |