Le langage ActionScript > A propos des objets personnalisés > Création d'héritage

 

Création d'héritage

L'héritage est une manière d'organiser, d'étendre et de réutiliser des fonctionnalités. Les sous-classes héritent des propriétés et des méthodes des super-classes, auxquelles elles ajoutent des propriétés et méthodes spécialisées. Par exemple, dans le monde réel, Cycle pourrait être une super-classe dont VTT et Tricycle seraient des sous-classes. Ces deux sous-classes contiennent, ou héritent, les méthodes et les propriétés de la super-classe (par exemple roues). Chaque sous-classe possède également des propriétés et des méthodes spécifiques qui étendent la super-classe (par exemple, la sous-classe VTT pourrait comporter une propriété pignons). Vous pouvez utiliser les éléments prototype et __proto__ pour créer un héritage dans ActionScript.

Toutes les fonctions constructeur ont une propriété prototype qui est créée automatiquement en même temps que la fonction. La propriété prototype indique les valeurs de propriétés par défaut des objets créés avec cette fonction. Vous pouvez utiliser la propriété prototype pour affecter des propriétés et méthodes à une classe. Pour plus d'informations, consultez Affectation de méthodes à un objet personnalisé.

Toutes les occurrences d'une classe possèdent une propriété __proto__ qui indique de quel objet elles sont héritières. Lorsque vous utilisez une fonction constructeur pour créer un nouvel objet, la propriété __proto__ est configurée de manière à faire référence à la propriété prototype de sa fonction constructeur.

L'héritage fonctionne selon une hiérarchie précise. Lorsque vous appelez la méthode ou la propriété d'un objet, ActionScript vérifie si un tel élément existe dans l'objet. S'il n'existe pas, ActionScript cherche les informations (monObjet.__proto__) dans la propriété __proto__ de l'objet. Si la propriété n'est pas une propriété de l'objet __proto__, ActionScript cherche dans monObjet.__proto__.__proto__, etc.

L'exemple suivant définit la fonction constructeur Cycle :

function Cycle (longueur, couleur) {
	this.longueur = longueur;
	this.couleur = couleur;
}

Le code suivant ajoute la méthode roule à la classe Cycle :

Cycle.prototype.roule = function() {this._x = _x + 20;};

Au lieu d'ajouter une méthode roule aux classes VTT et Tricycle, vous pouvez créer la classe VTT et définir Cycle comme sa super-classe :

VTT.prototype = new Cycle();

Vous devez ensuite appeler la méthode roule de VTT, comme ci-dessous :

VTT.roule();

Les clips n'héritent pas les uns des autres. Pour créer un héritage entre clips, vous pouvez utiliser la méthode Object.registerClass afin d'affecter une classe autre que MovieClip à des clips. Pour plus d'informations, consultez Object.registerClass dans le dictionnaire ActionScript.

Pour plus d'informations sur l'héritage, consultez Object.__proto__, #initclip, #endinitclip et super dans le dictionnaire ActionScript.