Vous êtes sur la page 1sur 11

P.O.O.

Le mot clé super Exemple 1


public class ClasseMere{
1. super.nomMethode() permet d'appeler la méthode nomMethode() public int a ;
hérité de la classe mère.
public ClasseMere(){ //1er constructeur de la classe mère
…}
Réutiliser le code des méthodes héritées.
public ClasseMere(int a){ //2eme constructeur de la classe mère
…}
Exemple : super.afficherInfos(); //Appeler la méthode }
//afficherInfos() de la classe mère.
public class ClasseFille extends ClasseMere{
public String nom ;
2. super.nomAttribut permet d’accéder à un attribut hérité de la classe
mère en écrivant: public ClasseFille( int a, String nom ){
super.nomAttribut ou directement par nomAttribut. super(a); //appel au 2eme constructeur de la classe mère
this.nom= nom}
21 22
}

Exemple 2 Exemple 2

23 24

A.U. 2021-2022
P.O.O.

Exercice Classe mère : Animal


public class Animal {
▪ Ecrire une classe Animal qui dispose d’un attribut entier nbPattes. public int nbPattes;
Cette classe dispose des méthodes suivantes : public Animal(int nbPattes){ //constructeur
this.nbPattes = nbPattes;
• le constructeur, qui prend en argument un entier (le nombre de }
pattes), //accesseur
• La méthode affiche() qui affiche le nombre de pattes de l’animal. public int getNbPattes()
{return this.nbPattes;}
▪ Ecrire une classe Poule qui hérite de Animal. //modifieur
▪ Ecrire une classe Lapin qui hérite de Animal. public void setNbPattes(int nb)
▪ Ecrire une classe testAnimal dans laquelle la méthode main() crée un {this.nbPattes = nb;}
Lapin et une Poule.
public void affiche() {
System.out.println ("Ceci est un animal doté de " +
getNbPattes() + " pattes");
}
25 } 26

Classes filles : Poule et Lapin Classe Main : Programme principal


public class Poule extends Animal {
public class testAnimal
public Poule(int nb){ //constructeur {
super(nb); public static void main(String args[])
} {
public void affiche() { Poule a = new Poule(2);
System.out.println ("Ceci est une poule dotée de " + Lapin b = new Lapin(4);
super.getNbPattes() + " pattes"); a.affiche();
}
b.affiche();
}
}
public class Lapin extends Animal }
{
public Lapin(int nb){ //constructeur
super(nb);
}
public void affiche() {
System.out.println ("Ceci est un lapin doté de " +
super.getNbPattes() + " pattes");
}
27 28
}

A.U. 2021-2022
P.O.O.

Appel de méthodes
▪Exemple 1/2:
public class Vehicule { public class Voiture extends Vehicule{

3. Héritage void demarrer()



void demarrer()

} }
et appel de méthodes
public class Main { Méthode appelée ici
public static void main(String args[]){
Voiture v = new Voiture();
v.demarrer();
}
}

▪ Java commence par chercher la méthode dans la classe de l'objet créé.


29 30

Appel de méthodes
▪Exemple 2/2:
public class Vehicule { public class Voiture extends Vehicule{
void demarrer() …
… }
} 4. Héritage et visibilité
public class Main { Méthode appelée ici
public static void main(String args[]){
Voiture v = new Voiture();
v.demarrer();
}
}
▪ Si la méthode n'existe pas dans la classe de l'objet créé, Le programme
va chercher dans la classe mère. 31 32

A.U. 2021-2022
P.O.O.

Héritage et visibilité Héritage et visibilité


▪ Une classe fille hérite des attributs et méthodes sans modificateur, ▪Exemple:
public et protected de la classe mère. public class Vehicule {
protected double longueur;
}
▪ Elle n’hérite pas des attributs et méthodes private.
public class Voiture extends Vehicule {
▪ Un objet d’une classe mère n’hérite pas les attributs et les méthodes protected int nbPortes;
de ses classes filles. …
}

▪ On peut utiliser l’attribut longueur dans Vehicule et dans Voiture.

33 34

Le modificateur final (rappel)


▪ Une classe déclarée final ne peut pas avoir de filles.

▪ Une méthode déclarée final ne peut pas être redéfini par des sous-
classes de la classe dont elle provient.

▪ Les attributs déclarés final sont des constantes: le compilateur


5. La classe Object
interdit de les modifier.

35 36

A.U. 2021-2022
P.O.O.

La classe Object Méthodes de la classe Object


▪ Il existe en Java, une unique racine pour l'héritage appelé la classe
Object.
▪ Toutes les classes en Java héritent de la classe Object. ▪ void finalize(): est appelée par le ramasse-miettes avant qu'une
instance ne soit détruite de la mémoire.
❑ Les méthodes de Object sont:
▪ public boolean equals(Object obj): teste l'égalité des valeurs des ▪ String toString(): renvoie une chaine de caractère décrivant l'objet.
objets.
Par défaut, elle renvoie :
Exemple: le type de l’objet et son adresse de stockage en mémoire.
String a1= "FSJEGJ";
String a2="FSJEGJ";
If (a1==a2)

If(a1.equals(a2))
37 38

Méthodes de la classe Object Méthodes de la classe Object


public String toString()
▪ Exemple: méthode String toString { Redéfinition de la
if(this.prixArticle == -1) Méthode toString()
public class Article { return ("Le prix n'a pas été donné !");
else
private int prixArticle; // attribut return (" Votre article vaut "+ this.prixArticle + " dinar(s). ");
}
public Article() //Premier constructeur
{ this.prixArticle = -1;} } //fin classe Article

public Article(int prixArticle) //Second constructeur public class testArticle {


{ public static void main(String[] args)
if (prixArticle >= 0) {
this.prixArticle = prixArticle; Article a = new Article(20);
else System.out.println( a.toString() );
this.prixArticle = -1; }
} 39
} 40

A.U. 2021-2022
P.O.O.

Méthodes de la classe Object Méthodes de la classe Object

▪ Exemple (suite): méthode String toString ▪ Object clone() : crée un nouvel objet, identique a un objet existant
− Exécution avec la redéfinition de la méthode toString(): au moment de sa création (les deux objets évoluent ensuite
séparément).

− Exécution sans la redéfinition de la méthode toString():

41 42

Clonage d’objets (1/4) Clonage d’objets (2/4)

43 44

A.U. 2021-2022
P.O.O.

Clonage d’objets (3/4) Clonage d’objets (4/4)


Exécution :

45 46

Fin du chapitre 4

47

A.U. 2021-2022
P.O.O.

Université de Jendouba
Faculté des Sciences Juridiques, Economiques et de Gestion de Jendouba

Module:

Programmation Orientée Objet Chapitre 5: Les classes


(P.O.O.)
abstraites et les interfaces

2ème année LFIAG / A.U. 2021-2022


Enseignant : KHEMIRI Nabil
Contact : nabil.khemiri@gmail.com 2

Plan

1 : Les classes abstraites

2 : Les interfaces 1. Les classes abstraites

3 4

A.U. 2021-2022
P.O.O.

Classes et méthodes abstraites Classes et méthodes abstraites


▪ Une classe abstraite contient au moins une méthode abstraite. ▪ Une classe abstraite doit avoir des classes filles concrètes.

▪ Méthode abstraite: on déclare que son en-tête (n'admettant pas ▪ Les classes abstraites permettent de créer des classes génériques
d'implémentation). expliquant certains comportements sans les implémenter.

Exemple : public abstract void afficherInfos() ; ▪ Une classe abstraite propose un certain nombre de fonctionnalités
similaires pour tous ses futurs descendants.

▪ Les classes abstraites peuvent également contenir des méthodes ▪ Les classes abstraites sont un outil intéressant pour le
déjà implémentés (concrètes). polymorphisme (la redéfinition de méthodes dans les classes filles).

▪ Une classe abstraite est non instanciable directement.


5 6

Classes et méthodes abstraites Syntaxe de déclaration


▪ Un attribut ne peut pas être abstrait. ▪ Exemple: /**Entête de la classe**/

public abstract class Addition { // Classe abstraite

▪ Une méthode abstraite doit obligatoirement être déclarée sans


/**Corps de la classe**/
modificateur, public ou protected puisque sa vocation est d’être
implémenté (redéfinie) dans une classe fille.
int a, b;

public abstract void affiche() ; // Méthode abstraite

▪ Une classe fille d’une classe abstraite n’est pas obligée public int somme (int a, int b){ // Méthode concrète
d’implémenter toutes les méthodes abstraites de sa classe x = a + b ;
return (x);
mère. }
}
7 8

A.U. 2021-2022
P.O.O.

Classe Personne
public String nom
public String prénom Classe mère:
public int age classe abstraite
public abstract void AfficherInfos()
public int getAge()
public void setAge(int age)
Classe fille: Classe fille:

Exemple : classe abstraite classe concrète


Classe Enseignant
classe concrète

Classe Etudiant
public String spécialité
public int numEtudiant
public String grade
public void AfficherInfos()
public float salaire
public void AfficherInfos()
public String getGrade()
public void setGrade(String grade)
public float getSalaire()
9 10
public void setSalaire(float salaire)

Classe Personne Classe Etudiant

11 12

A.U. 2021-2022
P.O.O.

Classe Enseignant Classe Test

13 14

Classe Test

2. Les interfaces

Exécution :

15 16

A.U. 2021-2022

Vous aimerez peut-être aussi