Rutilisation
Hritage
2013-2014
284
SMI /SBDR/FSAC
286
SMI /SBDR/FSAC
SMI /SBDR/FSAC
2013-2014
285
2013-2014
2013-2014
287
SMI /SBDR/FSAC
Problmes :
288
2013-2014
SMI /SBDR/FSAC
289
2013-2014
SMI /SBDR/FSAC
Vocabulaire
2013-2014
290
SMI /SBDR/FSAC
2013-2014
291
SMI /SBDR/FSAC
292
2013-2014
SMI /SBDR/FSAC
2013-2014
293
SMI /SBDR/FSAC
Exemples dhritages
seulement
ajoute ainsi une variable couleur et les mthodes qui y sont lies
2013-2014
294
SMI /SBDR/FSAC
2013-2014
295
SMI /SBDR/FSAC
Particularisation-gnralisation :
particulire
Par exemple,
C++ et Eiffel permettent lhritage multiple ;
polygone
langage Java
296
2013-2014
SMI /SBDR/FSAC
2013-2014
297
Lhritage en Java
SMI /SBDR/FSAC
Exemples dhritages
mthodes
2013-2014
298
SMI /SBDR/FSAC
2013-2014
299
SMI /SBDR/FSAC
Par exemple:
300
2013-2014
SMI /SBDR/FSAC
301
2013-2014
Types en Java
SMI /SBDR/FSAC
Sous-type
int
Par exemple,
A a = new B();
et classes
est autoris
2013-2014
302
SMI /SBDR/FSAC
2013-2014
303
SMI /SBDR/FSAC
Uniquement les
lments ajouts
ou modifis par la
classe fille
304
2013-2014
SMI /SBDR/FSAC
2013-2014
SMI /SBDR/FSAC
super(...)
ou un autre constructeur de la classe :
this(...)
305
2013-2014
306
SMI /SBDR/FSAC
2013-2014
307
SMI /SBDR/FSAC
308
2013-2014
SMI /SBDR/FSAC
2013-2014
309
SMI /SBDR/FSAC
2013-2014
310
SMI /SBDR/FSAC
2013-2014
311
SMI /SBDR/FSAC
Question
class A {
private int i;
A(int i) {
this.i = i;
}
}
Compile ?
Sexcute ?
class B extends A { }
2013-2014
312
SMI /SBDR/FSAC
2013-2014
314
SMI /SBDR/FSAC
PI = 3.14;
313
SMI /SBDR/FSAC
// Mthodes
public double surface() {
return PI * rayon * rayon;
}
public Point getCentre() {
return centre;
}
public static void main(String[] args) {
Point p = new Point(1, 2);
Cercle c = new Cercle(p, 5);
System.out.println("Surface du cercle:"+c.surface());
}
}
2013-2014
classe Point
2013-2014
315
SMI /SBDR/FSAC
2013-2014
316
SMI /SBDR/FSAC
2013-2014
318
SMI /SBDR/FSAC
2013-2014
317
SMI /SBDR/FSAC
2013-2014
319
SMI /SBDR/FSAC
this et constructeurs
classe Object
la classe Object
this(v, ); // ou super(v, );
this(traitement(), );
320
2013-2014
SMI /SBDR/FSAC
2013-2014
321
SMI /SBDR/FSAC
Rsoudre ce problme
Utiliser une mthode static (pas dutilisation de this implicite dans les
paramtres du constructeur) si cest un traitement qui nest pas li une
instance particulire
2013-2014
322
SMI /SBDR/FSAC
2013-2014
323
SMI /SBDR/FSAC
Protection protected
la classe A
membres private)
Ces membres sont utiliss pour le bon fonctionnement de
B, mais B ne peut pas les nommer ni les utiliser
explicitement
2013-2014
324
SMI /SBDR/FSAC
2013-2014
326
SMI /SBDR/FSAC
SMI /SBDR/FSAC
protected et paquetage
2013-2014
325
2013-2014
327
SMI /SBDR/FSAC
2013-2014
328
SMI /SBDR/FSAC
329
2013-2014
class A {
. . .
protected int m() { . . . }
}
class B extends A {
. . .
public int m2() {
int i = m(); // toujours autoris
A a = new A();
i += a.m(); // pas toujours autoris
. . .
}
330
mais pas
dune instance dune autre classe (par exemple, de la classe est A ou dune
autre classe fille D de A) ;
a dpend de quoi ?
2013-2014
SMI /SBDR/FSAC
SMI /SBDR/FSAC
2013-2014
331
SMI /SBDR/FSAC
Public
Protected
classes filles
Private
2013-2014
332
SMI /SBDR/FSAC
protected et constructeur
2013-2014
334
SMI /SBDR/FSAC
2013-2014
333
SMI /SBDR/FSAC