Héritage/Polymorphisme, combien d'objets sont créés
Bonjour, j'ai un petit exercice à résoudre. Je fais du Java depuis quelques mois et je me pose quelques questions. J'aurais besoins de confirmations si possible :) .
L'exercice est le suivant :
On nous donne:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| class Object{
public void say() {
System.out.println("Nothing");
}
}
class Cube extends Object{
}
class Wood extends Cube{
public void say() {
super.say();
System.out.println("WOODY");
}
}
class BigWood extends Wood{
}
class RedWood extends BigWood{
public void say() {
System.out.println("BIG RED WOOD");
}
}
class Perforated extends RedWood{
public void say() {
super.say;
System.out.println("BIG RED WOOD & HOLE");
}
}
class GreenWood extends BigWood{
public void say() {
System.out.println("BIG GREEN WOOD");
}
} |
-----------------------------------------------------------------------------
Soit la méthode main suivante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
public static void main(String argv[ ]) {
Cube [ ] ta;
ta = new Cube[5];
Object o1 = new Object();
Object o2 = new RedWood();
Cube o3 = new Wood();
BigWood o4 = new BigWood();
Perforated o5 = new Perforated();
BigWood o6 = new RedWood();
Cube o7 = new CreenWood();
o1.say();
o2.say();
o3.say();
o4.say();
o5.say();
o6.say();
o7.say();
ta[0] = (Cube) o2;
ta[1] = (Cube) o3;
ta[2] = (Wood) o4;
ta[3] = (Cube) o5;
ta[4] = o7
for(int i = 0; i<5; i++)
ta[i].say();
} |
Questions: -Hormis les chaines, combien d'objets sont réellement créés en mémoire? (Je dirais 8)
-Qu'affichera la méthode main() ? (ce dont j'ai le plus de doutes)
Si quelqu'un peut prendre 5 minutes pour m'aider à m'éclaircir les idées... ;)