Académique Documents
Professionnel Documents
Culture Documents
Chapitre3 Cours de JAVA
Chapitre3 Cours de JAVA
Prof: R. EL AYACHI
Département d’informatique
Faculté des Sciences et Techniques
Béni Mellal
1
Chapitre 3: Classes et Héritage
1. Héritage
2. Référence à la super classe
3. Masquage des attributs et redéfinition des
méthodes
4. Casting ou transtypage
5. Interfaces
6. Classe abstraite
7. Exemple: Une classe abstraite pour des formes
géométriques
2
Prof: R. EL AYACHI
1. Héritage
1. Définition:
* L’héritage est l’un des aspects les plus utiles de
la POO. Il permet à une classe de transmettre
ses attributs et ses méthodes à des sous
classes.
* Si une classe B hérite d’une classe A, Alors la
classe B contient implicitement l’ensemble
des attributs non privés de A et peut
invoquer les méthodes non privées de A.
3
Prof: R. EL AYACHI
1. Héritage
2. Déclaration:
* En java, pour déclarer l’héritage, on utilise le
mot clé extends.
* Syntaxe:
class B extends A
4
Prof: R. EL AYACHI
1. Héritage
3. Propriétés:
* La classe dérivée hérite tous les attributs et les
méthodes non privés de sa super classe.
* Tout objet de la classe dérivée est aussi un
objet de la super classe.
* Si une classe n’hérite d’aucune autre classe,
elle hérite par défaut de la super classe
Object définie dans le package java.lang
* Si la déclaration d’une classe est précédée de
final, alors cette classe ne peut pas être une
classe héritable. 5
Prof: R. EL AYACHI
1. Héritage
Exemple1:
On dispose de la classe Point suivante:
class Point{
public int x,y;
Point(int x,int y){
this.x=x; this.y=y;
}
public void affiche(){
System.out.println(‘’Coordonnées : ’’+x+’’ et ‘’+y);
}
}
Réaliser une classe PointNom, dérivée de Point permettant de manipuler des points définis
par leurs coordonnées et un nom. On y prévoit les méthodes suivantes:
• Un constructeur pour définir les coordonnées et le nom d’un objet de type PointNom.
• Une méthode affiche_info pour afficher les coordonnées et le nom d’un objet de type
PointNom.
6
Prof: R. EL AYACHI
1. Héritage
7
Prof: R. EL AYACHI
2. Référence à la super classe
* Pour faire référence à la classe parente (super
classe), il suffit d’utiliser le mot clé super.
* Ce mot permet d’invoquer un attribut ou une
méthode de la super classe.
* On utilise super(arguments) pour invoquer le
constructeur de la super classe ayant les
arguments correspondants.
8
Prof: R. EL AYACHI
2. Référence à la super classe
Exemple2:
9
Prof: R. EL AYACHI
2. Référence à la super classe
Exemple2: (suite)
10
Prof: R. EL AYACHI
2. Référence à la super classe
Exemple3:
* Prenons la hiérarchie suivante:
Animal
11
Prof: R. EL AYACHI
2. Référence à la super classe
class Animal class Canari extends Animal
{ boolean vivant; {
int age; Canari(int a)
Animal(int a) {super(a);}
{ age=a; vivant=true; void crie()
System.out.println(″Un animal de″+a+″an(s) vient d’être { System.out.println(″Le canard crie Cui Cui!″);}
crée″);} }
void vieillit() class Chien extends Animal
{ ++age; {
System.out.println(″C’est l’anniversaire de cet animal″); Chien(int a)
System.out.println(″Il a maintenant″+age+″an(s)″); {super(a);}
} void crie()
void meurt() { System.out.println(″Le chien crie Hab Hab!″);}
{vivant=false; }
System.out.println(″Cet animal est mort″); class Caniche extends Chien
} {
void crie() Caniche(int a)
{ {super(a);}
} }
}
12
Prof: R. EL AYACHI
2. Référence à la super classe
class Animaux A l’exécution, on aura:
{
public static void main(String[] arg) Utilisation d’un objet Canari
{ Un animal de 3 an(s) vient d’être crée
System.out.println(″Utilisation d’un objet Canari″); C’est l’anniversaire de cet animal
Canari titi = new Canari(3); Il a maintenant 4 an(s)
titi.vieillit(); Le canard crie Cui Cui !
titi.crie();
Utilisation d’un objet Chien
System.out.println(″Utilisation d’un objet Chien″); Un animal de 2 an(s) vient d’être crée
Chien bobi = new Chien(2); C’est l’anniversaire de cet animal
bobi.vieillit(); Il a maintenant 3 an(s)
bobi.crie(); Le chien crie Hab Hab !
13
Prof: R. EL AYACHI
3. Masquage des attributs et redéfinition des méthodes
14
Prof: R. EL AYACHI
3. Masquage des attributs et redéfinition des méthodes
15
Prof: R. EL AYACHI
4. Casting ou transtypage
* Le casting (mot anglais qui signifie moulage),
également appelé transtypage, consiste à
effectuer une conversion d’un type vers un
autre type. Il peut être effectué dans deux
conditions différentes:
Vers un type plus général. (sur-casting)
vers un type particulier. (sous-casting)
16
Prof: R. EL AYACHI
5. Interfaces
1. Définition:
Une interface est une sorte de classe qui ne
contient que des prototypes de méthodes et des
constantes ayant les modificateurs static et final.
Elle sert à regrouper des constantes et à traiter des
objets qui ne sont pas tous de la même classe mais
qui ont en commun une partie. Cette partie sera
gérée par l’interface.
17
Prof: R. EL AYACHI
5. Interfaces
2. Présentation:
Une interface se compose de deux parties: En-tête et
Corps.
[modificateur] interface <Nom> [extends <interface>]
{
déclarations des constantes et des prototypes de méthodes
}
Remarque: Une interface peut dériver de plusieurs autres
interfaces (héritage multiples pour les
interfaces et non pas pour les classes)
18
Prof: R. EL AYACHI
5. Interfaces
3. Propriétés:
Pour dériver une classe d’une interface, on doit utiliser le
mot : implements.
Exemple: class A implements I
- Toutes les méthodes figurant dans l’interface I doivent
être déclarées publiques (avec le modificateur public)
et définies par la classe A.
Si une classe A implémente une interface I, les sous
classes de A implémentent aussi automatiquement I.
19
Prof: R. EL AYACHI
5. Interfaces
Exemple4:
interface AfficheTexte public class UtiliseInterface
{ {
void affiche(); public static void main(String[] arg)
} {
Class Appartement implements AfficheTexte Appartement appart = new Appartement();
{ Maison demeure = new Maison();
public void affiche() appart.affiche();
{ demeure.affiche();
System.out.printn(″Bel appartement″); }
} }
} -------------------------------------------------------------------------------
Class Maison implements AfficheTexte
{
public void affiche() A l’exécution:
{ Bel appartement
System.out.printn(″Maison n’est pas mal non plus″); Maison n’est pas mal non plus
}
}
20
Prof: R. EL AYACHI
6. Classe abstraite
* Une classe abstraite est une classe qui contient au
moins une méthode abstraite, elle doit être déclarée
avec le mot abstract.
* Une méthode est dite abstraite si seul son prototype
figure. Elle n’a pas de définition explicite.
* Une classe abstraite ne peut pas être instanciée, il
faut l’étendre pour pouvoir l’utiliser.
21
Prof: R. EL AYACHI
6. Classe abstraite
Exemple5:
Soit la classe suivante :
abstract class Forme {
abstract float perim();
abstract float surf();
abstract void affiche();
}