Correction 4.2 [Livre de cours exercice 12.5]
1class A {
2pu blic vo id a () {
3Sy ste m .out . pr int ln ("a de A ") ;
4}
5pu blic vo id b () {
6Sy ste m .out . pr int ln ("b de A ") ;
7}
8}
9
10 class Bextends A {
11 pu blic vo id b () {
12 Sy ste m .out . pr int ln ("b de B ") ;
13 }
14 pu blic vo id c () {
15 Sy ste m .out . pr int ln ("c de B ") ;
16 }
17 }
18
19 pu blic cl ass Correc ti on 2 {
20 public static void ma in ( St rin g [] ar gs ) {
21 A a 1 = new A () ; // OK
22 A b 1 = new B () ; // OK car B est un A
23 B a 2 = new A () ; // NOK ( compi la ti on ) car A n’est pas un B !
24 B b 2 = new B () ; // OK
25 a1 . a () ; // af fiche ‘ ‘a de A ’’
26 b1 . a () ; // a ff ic he ‘‘ a d e A ’ ’ p ui sq ue B n ’ a pa s d e m et ho de a ( )
27 a2 . a () ; // NOK ( l ign e 23 )
28 b2 . a () ; // a ff ic he ‘‘ a d e A ’ ’ p ui sq ue B n ’ a pa s d e m et ho de a ( )
29 a1 . b () ; // af fiche ‘ ‘b de A ’’
30 b1 . b () ; // a ff ic he ‘‘ b d e B ’ ’ ( un m es sa ge e st t o uj ou rs r ecu pa r l ’ o bj et i ns ta nc ie )
31 a2 . b () ; // NOK ( l ign e 23 )
32 b2 . b () ; // af fiche ‘ ‘b de B ’’
33 a1 . c () ; // NOK ( compi la ti on ) car la c lasse A n’a pas de meth od e c ()
34 b1 . c () ; // NOK ( compi la ti on ) car la c lasse A n’a pas de meth od e c ()
35 a2 . c () ; // NOK ( l ign e 23 )
36 b2 . c () ; // af fiche ‘ ‘c de B ’’
37 (( B ) a1 ) .c ( ) ; // NOK ( e xecution ) : un ob jet de type A ne peut pas re pondr e au messag e c ()
38 (( B ) b1 ) .c ( ) ; // O K : l ’ o bj et d e t yp e B r e coi t le m es sa ge c ( ) e t a ff ic he ‘‘ c d e B ’ ’
39 (( B ) a2 ) .c ( ) ; // NOK ( l ign e 23 )
40 (( B ) b2 ) .c ( ) ; // OK : a ffiche ‘‘c de B ’’
41 }
42 }