Académique Documents
Professionnel Documents
Culture Documents
Professeur: M. Joundi
L’héritage (3) : définition
• Héritage : mécanisme permettant le partage
et la réutilisation de propriétés entre les
objets. La relation d’héritage est une relation
de généralisation / spécialisation.
Personne
class Personne
nom : String
{ date_naissance : Date
protected String nom;
protected Date date_naissance;
// ...
}
implémentation
Redéfinir une méthode (overriding)
A is correct
Polymorphisme
Question
Soit l’exemple d’une classe Etudiant qui hérite de la classe
Personne.
Soit une méthode getNom() de Personne
qui est redéfinie dans Etudiant
quelle méthode getNom() sera exécutée dans le code
suivant, celle de Personne ou celle de Etudiant?
Personne a =new Etudiant(5);
a.getNom();
la méthode appelée ne dépend que du type réel
(Etudiant) de l’objet a et pas du type déclaré (ici
Personne )
c’est la méthode de la classe Etudiant qui sera exécutée
Polymorphisme
System.out.println(noms[i].getNom())
;
}
Polymorphisme
...
Polymorph pm = new Polymorph();
pm.prnt();
pm = new MonomorphA();
pm.prnt();
pm = new MonomorphB();
pm.prnt();
héritage & ( Upcasting /Downcasting)
/
Upcasting
faire passer une classe dérivée pour sa super-classe
sans risque
A, B, E, and F
10 Given:
class Uber {
static int y = 2;
Uber(int x) { this(); y = y * 2; }
Uber() { y++; }
}
class Minor extends Uber {
Minor() { super(y); y = y + 3; }
public static void main(String [] args) {
new Minor();
System.out.println(y);
}}
Quel est le résultat?
A 6
B 7
C 8
D 9
E Compilation fails.
F An exception is thrown.
10 Given:
class Uber {
static int y = 2;
Uber(int x) { this(); y = y * 2; }
Uber() { y++; }
}
class Minor extends Uber {
Minor() { super(y); y = y + 3; }
public static void main(String [] args) {
new Minor();
System.out.println(y);
}}
Quel est le résultat?
A 6
B 7
C 8
D 9
E Compilation fails.
F An exception is thrown.
D is correct
1. class Dog { }
2. class Beagle extends Dog { }
3.
4. class Kennel {
5. public static void main(String [] arfs) {
6. Beagle bl = new Beagle();
7. Dog dogl = new Dog();
8. Dog dog2 = bl;
9. // insert code here
10. } }
• Quelle est la(les)ligne(s) de code à insérer à la ligne 9 est qui
réussira à la compilation.
A Beagle b2 = (Beagle) dog1;
B Beagle b3 = (Beagle) dog2;
D Beagle b4 = dog2;
E None of the above statements will compile.
1. class Dog { }
2. class Beagle extends Dog { }
3.
4. class Kennel {
5. public static void main(String [] arfs) {
6. Beagle bl = new Beagle();
7. Dog dogl = new Dog();
8. Dog dog2 = bl;
9. // insert code here
10. } }
• Quelle est la(les)ligne(s) de code à insérer à la ligne 9 est qui réussira à
la compilation.
A Beagle b2 = (Beagle) dog1;
B Beagle b3 = (Beagle) dog2;
D Beagle b4 = dog2;
E None of the above statements will compile.
A and B are,correct
13 Given the following,
1. class X { void dol() { } }
2. class Y extends X { void do2() { } }
3.
4. class Chrome {
5. public static void main(String [] args) {
6. X x1 = new X();
7. X x2 = new Y();
8. Y y1 = new Y();
9. // insert code here
10. } }
• Quelle est la(les)ligne(s) de code à insérer à la ligne 9 est qui réussira
à la compilation.
A x2.do2( );
B (Y) x2. do2( );
C ((Y)x2).do2();
D None of the above statements will compile.
13 Given the following,
1. class X { void dol() { } }
2. class Y extends X { void do2() { } }
3.
4. class Chrome {
5. public static void main(String [] args) {
6. X x1 = new X();
7. X x2 = new Y();
8. Y y1 = new Y();
9. // insert code here
10. } }
• Quelle est la(les)ligne(s) de code à insérer à la ligne 9 est qui réussira
à la compilation.
A x2.do2( );
B (Y) x2. do2( );
C ((Y)x2).do2();
D None of the above statements will compile.
C is correct
Le contrôle d'accès
private oui