Académique Documents
Professionnel Documents
Culture Documents
Hérite de
Hérite de
langages OO permettant
de créer une nouvelle
class C
classe à partir d’une ou attributs
méthodes
plusieurs autres classes en
La classe C utilise les attributs et les
partageant leurs attributs
méthodes déclarés à son niveau
et leurs méthodes. La classe C utilise par héritage les attributs
et les méthodes déclarés dans les classes A
et B
Univ. Alger1/FS/MI DjaafriLyes
Définitions (2/4)
class A
attribut
Java permet seulement d’hériter une seule méthodes
classe → héritage simple
Hérite de
La classe B hérite de la classe A :
A est la classe mère et B la classe fille class B
attributs
B est la classe dérivée de A méthodes
la classe B est une sous-classe de la La classe B utilise les attributs et
classe A les méthodes déclarés à son niveau
La classe B utilise par héritage les
la classe A est la super-classe de la attributs et les méthodes déclarés
dans la classes A
classe B Univ. Alger1/FS/MI DjaafriLyes
Définitions (3/4)
class
L’héritage exprime la relation « est un class
Personn
» entre une sous classe et une super Animal
e
classe.
généralisation
généralisation
spécialisation
spécialisation
L’héritage exprime la relation de
est un
est un
généralisation entre une super classe
et une sous classe
L’héritage exprime la relation de class class
spécialisation entre une sous classe Oiseau Employe
et une super classe
Mammifère
Carnivore Carnivore
PointNommé
class A { class A
//membres de A
}
class B extends A {
//membres de B
}
class B
Point
On veut créer une classe
double x représentant un point
double y
nommé à partir de la classe
void afficher()
void deplacer(double dx, double dy) Point=> utilisation de
l’héritage
Un objet PointNommé est un
pn.affichePN();
pn
} Affichage:
} x= 0 -4 -2
[-2,7]
y= 0 3 7
Point: A [-2,7] nom= null " A"
Redéfinition des membres(1/2)
concepts
La classe héritière peut redéfinir des membres avec le même nom
que la classe mère. Deux cas se présentent :
□ Signature différente et nom identique entre membres classe
class B extends A{
int q; //redéfinition de q dans la sous classe
int g(int a){..} //surcharge de la méthode g()
private void p(int a){..} /*redéfinition non
acceptée- réduction de visibilité*/
si aucun constructeur n’est déclaré dans la super-classe alors super() correspond au constructeur par
défaut
Hérite de
Point hérite directement de Object
PointNommé hérite indirectement de Object
Point
La classe Object de la bibliothèque standard de Java est la classe de attributs
méthodes
plus haut niveau dans la hiérarchie d'héritage
Hérite de
Top level Object
… class1 class2
PointNommé
attributs
… class11 class12 class21 méthodes
redéfinition de
PointNommé p1=new PointNommé(3,5, "x");
System.out.println(p1);
méthodes
Point
toString() méthode de la classe
Object, affiche :
Avant } P oi nt N ommé @ 1 5 2 b6 6 5 1
PointNommé
println(p1) println(p1.toString())
redéfinition de méthodes
public String toString(){ [] args){
return "("+x+","+y+ ")"; Point p1=new Point(2,-4);
}… System.out.println(p1);
} //affiche: (2 ,-4)
PointNommé p2;
class PointNommé extends Point { …
public String toString(){
p2=new PointNommé(3,5, "x");
return "Point:" +nom+Super.toString(); System.out.println(p2);
//affiche : Point : x(3,5)
Après
}...
} } println(p1.toString())
class A {
private int x;
protected int y;
}
class B extends A {
x=1; // erreur de compilation: x est private dans la super-classe
y=1; //correcte: y est protected dans la super-classe
}
pn = p; // ERREUR de compilation
Point
public class TestOverrideEquals {
public boolean equals(Object o) public static void main(String [] args) {
…
Point p1,p2,p3,p4=null; p1=new Point(3,4);
p2=new Point(3,4); p3=new Point(3,-10);
String s="Bonjour";
System.out.println("p1 égale à p2 :"+p1.equals(p2));
System.out.println("p1 égale à p3 :"+p1.equals(p3));
System.out.println("p1 égale à p4 :"+p1.equals(p4));
System.out.println("p1 égale à s :"+p1.equals(s));
}
}