Exercice Java POO sur les constructeurs
Question 1
Voici un programme qui illustre le comportement des constructeurs avec des appels au constructeur de la super-classe (super). Ce programme se focalise sur les constructeurs, il n’y a rien d’autre dans les classes.
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 | class Premiere { Premiere ( ) { Terminal . ecrireStringln ( " constructeur du premiere"); } } class Seconde extends Premiere { Seconde ( boolean b ) { super ( ) ; Terminal . ecrireStringln ( " constructeur de Seconde " ) ; } } class Troisieme extends Premiere { Troisieme ( int i ) { super ( ) ; Terminal . ecrireStringln ( "constructeur de Troisieme " ) ; } } class Quatrieme extends Troisieme { Quatrieme ( double d ) { super ( 1 4 ) ; Terminal . ecrireStringln ( " constructeur de Quatrieme " ) ; } } class Exo19_1_1{ public static void main ( [ ] args ) { new Pr emi e r e ( ) ; Terminal . ecrireStringln ( "=============================" ) ; new Seconde ( true ) ; Terminal . ecrireStringln ( "=============================" ) ; new Troisieme ( 1 5 ) ; Terminal . ecrireStringln ( "=============================" ) ; new Quatrieme ( 1 2 . 3 ) ; } } |
1. dessinez le graphe d’héritage de ce programme, retraçant les relations d’héritage entre classes sans
oublier Object, la super-classe de Premiere.
2. prédisez ce que ce programme affiche.
3. compilez et exécutez ce programme pour vérifier vos prédictions.
4. y a-t-il un constructeur qui s’exécute sans afficher de message à la création de certains objets ?
Question 2{sidebar id=8}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class Cinquieme extends Premiere { Cinquieme ( ) { Terminal . ecrireStringln ( "constructeur de Cinquieme " ) ; } } class Sixieme extends Cinquieme { Sixieme ( ) { Te rmin a l . ecrireStringln ( "constructeur de Sixieme " ) ; } } class Exo19_1_2{ public static void main ([ ] args ) { new Cinquieme ( ) ; Terminal . ecrireStringln ( "=============================" ) ; new Sixieme ( ) ; } } |
1. prédisez ce que ce programme affiche.
2. compilez et exécutez ce programme pour vérifier vos prédictions.
Question 3
Le programme suivant provoque une erreur à la compilation : la classe Huitieme est incorrecte
1 2 3 4 5 6 7 8 9 10 | class Septieme ext nds Premiere { Septieme ( int i ) { Terminal . ecrireStringln ( " constructeur de Septieme " ) ; } } class Huitieme extends Septieme { Huitieme ( ) { Terminal . ecrireStringln ( " constructeur de Huitieme " ) ; } } |
Essayez de trouver l’erreur. Si vous n’y arrivez pas, essayez de compiler ce programme : le message
d’erreur peut vous mettre sur la voie.
Question 4{sidebar id=1}
1234567891011121314151617181920212223 | class Neuvieme extends Premiere {Neuvieme ( i n t i ) {Terminal.ecrireStringln ( " premier constructeur de Neuvieme " ) ;}Neuvieme ( boolean b ) {Te rminal.ecrireStringln(" second constructeur de Neuvieme " ) ;} }class Dixieme extends Neuvieme {Dixieme ( double d ) {super ( t rue ) ;Terminal . ecrireStringln ( " premie rconstructeur de Dixieme " ) ;}Dixieme ( int x , boolean y ) {super ( x ) ;Terminal . ecrireStringln ( " second constructeur de Dixieme " ) ;} }class Exo19_1_4{public static void main ( [ ] args ) {new Dixieme ( 1 0 . 5 ) ;Terminal . ecrireStringln ( "=============================" ) ;new Dixieme ( 4 5 , true ) ;}} |
1. prédisez ce que ce programme affiche.
2. compilez et exécutez ce programme pour vérifier vos prédictions.