Une façon simple de créer une classe abstraite est la suivante :
/**
@constructor
@abstract
*/
var Animal = function() {
if (this.constructor === Animal) {
throw new Error("Can't instantiate abstract class!");
}
// Animal initialization...
};
/**
@abstract
*/
Animal.prototype.say = function() {
throw new Error("Abstract method!");
}
El Animal
"classe" et le say
sont abstraits.
La création d'une instance entraînerait une erreur :
new Animal(); // throws
C'est ainsi que vous en "héritez" :
var Cat = function() {
Animal.apply(this, arguments);
// Cat initialization...
};
Cat.prototype = Object.create(Animal.prototype);
Cat.prototype.constructor = Cat;
Cat.prototype.say = function() {
console.log('meow');
}
Dog
ressemble à ça.
Et c'est ainsi que se déroule votre scénario :
var cat = new Cat();
var dog = new Dog();
cat.say();
dog.say();
Violon aquí (regardez la sortie de la console).
0 votes
Liés : Comment créer une classe de base abstraite en JavaScript qui ne peut pas être instanciée ?