En C#, tous est objet, la moindre classe de base est implicitement dérivée de la classe « Object ».
L’héritage, (avec l’encapsulation et le polymorphisme), est l’une des trois caractéristiques principales de la programmation orientée objet. Cela permet de créer de nouvelles classes qui réutilisent, étendent et modifient le comportement défini dans d’autres classes.
La classe dont les membres sont hérités porte le nom de classe de base (mère ou parent) et la classe qui hérite de ces membres porte le nom de classe dérivée (fille).
Chaque classe possède des caractéristiques (attributs et méthodes) qui lui sont propres. Lorsqu’une classe dérivée (fille) hérite d’une classe de base (mère), elle peut alors utiliser ses caractéristiques.
Rappel : Pour qu’une classe dérivée (fille) puisse hériter des propriétés de la classe de base, les propriétés de la classe mère doivent posséder des attributs de visibilité compatibles.
Public
, accessible directement en dehors de la classePrivate
, accessible uniquement depuis la classe couranteProtected
, visible par la classe courante, toutes les classes dérivées, mais inaccessible en dehors de celles-ci
Note : L’héritage multiple n’existe pas avec C#, cependant, l’utilisation d’interface contournera le problème…
Exemple :
class Sprite{ //parent class Vector2 position; Texture2D texture; public Sprite(Vector2 position){ this.position = position; } public void LoadContent(ContentManager content, String asset){ this.texture = content.Load<Texture2D>(assetName); } } class Human{ //child class String name = "NoName"; int health = 0; public Human(Vector2 position, String name, int health):base(position){ //base(position) spécifie quel constructeur de classe de base devrait être appelé //lors de la création d'instance de la classe dérivée this.name = name; this.health = health; } }
Notes:
Le mot clé base fait référence à la classe de base (mère).
Le mot-clé override indique que la méthode de la classe de base (mère) est réecrite par la classe dérivée (fille).
//in the child class
public override void Init(){
base.Init();
}
Le mot clé sealed empêchera les autres classes d’hériter d’elle (ou de l’un de ses membres).
public sealed class MyClassSealed { // ... } //or just one of these members public class MyClass { public sealed void MySealedFunction() { // ... } }
Rappel :
class MyParentClass{ ... } class MyChildClass : MyParentClass { ... } MyParentClass parent = new MyParentClass(); //un objet de la classe MyParentClass est créé MyChildClass child = new MyChildClass(); //un objet de la classe MyChildClass est créé MyParentClass child = new MyChildClass(); //child est un objet de la class MyChildClass //puisqu'un objet d'une classe dérivée est aussi un objet de sa classe de base
Et voilà pour mon 1er p’tit mémo de programmation !
Vous aimez mes articles ? Offrez-moi un café !