Beruflich Dokumente
Kultur Dokumente
III.1 Heritage
Une classe qui hrite d'une autre est une sous classe et celle
dont elle hrite est une super classe. L'hritage successif de
classes permet de dfinir une hirarchie de classe qui se
compose de super classes et de sous classes.
hrites.
Une classe peut avoir plusieurs sous classes. Une classe fille (sous
classe) ne peut avoir qu'une seule classe mre (super classe): il n'y a
Exemple
Exemple1
Class A {public A(){} //constructeur1 de A
public A(int n){} //constructeur2 de A
}
Class B Extends A{..//pas de constructeur}
B b=new B(); //Appel du constructeur 1 de A
Exemple2
Class A { public A(int n){} //constructeur2 A seulement }
Class B Extends A{..//pas de constructeur}
B b=new B();
//Erreur de compilation
Exemple3
Class A {..//pas de constructeur}
Class B Extends A{..//pas de constructeur}
B b=new B(); //le constructeur par dfaut de B qui appel le
constructeur par dfaut de A
Exemple
Class Pointcol Extends Point
{
Public void affiche(){
affiche(); //appel rcursif (super.affiche() appel affiche() de la classe de base)
System.out.println( . );
}
}
signatures diffrentes.
de D
D*
de A
de A
C*
de C
de C
C. Surdefinition et hritage:
la recherche dune mthode acceptable ne se fait quen remontant
la hirarchie dhritage, jamais en descendant.
III.2
Polymorphisme
A*
Affectations lgales
a=b;a=c;a=d;a=e;a=f;b=d; b=e;c=f;
Affectations illgales
b=a; d=c; c=d;
de D
de A
D*
de A
de A
C*
b.f(n) // f(int) de B
a=b;
a.f(n) // f(float) de B
de C
de C
Mthode surdefinie
On suppose que la conversion int->float est possible et float->int ne
lest pas.
Class A{ }
Class B extends A { }
Class Util { static void f(int p, B b) {.}
static void f(float x, Aa){..}}
Exemple1
A a= new A(); B b=new B();
Int n; float x;
Util.f(n,b) // OK sans conversion, appel de f(int,B)
Util.f(x,a) // OK sans conversion, appel de f(float,A)
Util.f(n,a) // conversion n en float, appel de f(float,A)
Util.f(x,b) // conversion b en A, appel de f(float,A)
Exemple2
Class A{.}
Class B Extends A {..}
Class Util { static void f(int p, A a){..}
static void f(float x, B b){..}}
A a =new A();
B b=new B();
Int n; float x;