Le concept de l’héritage est l’un des trois principaux fondements de la programmation orientée objet, le premier étant l’encapsulation, est le dernier est le polymorphisme qui sera abordé plus tard dans ce document.
L’héritage consiste à la créer une nouvelle classe dite classe drivée ou classe fille à partir d’une classe existante dite classe de base ou classe parente ou classe mère.
L’héritage permet de :
La classe de base :
class ClassA {
//propriété de la classe
public int DataA ;
//Méthode de la classe
public int FonctionA1(){
//code de la fonction fonctionA1
}
public virtual int FonctionA2() //surchargeable
{
//code de la méthode fonctionA2
}
}
classe fille :
class ClassB : ClassA{
//propriétés de la classe ClassB
public int DataB ;
//Méthodes de la classe ClassB
public override int FonctionA2(){
//code de la méthode FonctionA2
}
public int FonctionB1(){
//code de la méthode FonctionB1
}
}
Dans cet exemple :
En plus des mots clés publics et private décrits dans les chapitres précédents, il est possible d’utiliser un niveau de protection intermédiaire de propriétés et de méthodes par le mot clé protected. Les exemples ci- dessous permettent d’illustrer les différents niveaux de protection.
public class ClasseA {
//Propriétés de la classe ClasseA
private int dataA1 ; protected int dataA2; public int dataA3 ;
//Méthodes de la classe ClasseA
public int FonctionA(){ DataA1=3 ;
DataA2=5 ;
DataA3=8 ;
DataB=9 ;//Faux propriété de la classe fille est inaccessible dans la classe mére.
}
}
public class ClasseB : ClasseA{
//propriété de la classe ClasseB
public int DataB ;
//méthodes de la classe ClasseB
public int FonctionB(){
DataA1=6 ;//faux ,propriété private de la classe ClasseA inaccessible. DataA2=7 ;//OK, propriété protected de la classe mére
DataA3=10 ;//OK, propriété public de la classe mére DataB=90 ;//OK, propriété de la classe B
}
}
Dans cet exemple :
Lors des affectations (opérateur =), il est possible de mélanger des instances de classes différentes. Cependant, il y a quelques règles à observer :
Chaque constructeur d'une classe dérivée doit obligatoirement appeler le constructeur équivalent de la classe de base. Cela se fait de la façon suivante en utilisant le mot-clé base :
public class ClasseA {
//Propriétés de la classe ClasseA
private int dataA1 ; protected string dataA2; public double dataA3 ;
// Constructeur par défaut
public ClasseA (){
}
// Constructeur avec arguments
public ClasseA (int d1, string d2, double d3 ){ this.dataA1=d1;
this.dataA2=d2; this.dataA3=d3;
}
//Méthodes de la classe ClasseA
...
}
public class ClasseB : ClasseA {
//propriété de la classe ClasseB
public int DataB ;
// Constructeur par défaut
public ClasseB () : base(){
}
// Constructeur avec arguments
public ClasseB (int d1, string d2, double d3, int d4 ) : base(d1,d2,d3)
{
this.DataB=d4;
}
//Méthodes de la classe ClasseB
...
}
Ajouter un commentaire
Veuillez vous connecter pour ajouter un commentaire.
Pas encore de commentaires.