जावास्क्रिप्ट कक्षाएं और वंशानुक्रम (ES6)
ईएस 6 के अनुसार, आप जो कुछ भी आवश्यक है उसे पूरा करने के लिए जावास्क्रिप्ट कक्षाओं और विरासत का उपयोग कर सकते हैं।
ECMAScript 2015 में शुरू की गई जावास्क्रिप्ट कक्षाएं, मुख्य रूप से जावास्क्रिप्ट के मौजूदा प्रोटोटाइप-आधारित वंशानुक्रम पर सिंथेटिक चीनी हैं।
संदर्भ: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Clretes
सबसे पहले, हम अपने अमूर्त वर्ग को परिभाषित करते हैं। इस वर्ग को त्वरित नहीं किया जा सकता है, लेकिन इसे बढ़ाया जा सकता है। हम उन कार्यों को भी परिभाषित कर सकते हैं जिन्हें सभी वर्गों में लागू किया जाना चाहिए जो इसे बढ़ाता है।
/**
* Abstract Class Animal.
*
* @class Animal
*/
class Animal {
constructor() {
if (this.constructor == Animal) {
throw new Error("Abstract classes can't be instantiated.");
}
}
say() {
throw new Error("Method 'say()' must be implemented.");
}
eat() {
console.log("eating");
}
}
उसके बाद, हम अपनी ठोस कक्षाएं बना सकते हैं। ये कक्षाएं अमूर्त वर्ग से सभी कार्यों और व्यवहार को विरासत में मिलेंगी।
/**
* Dog.
*
* @class Dog
* @extends {Animal}
*/
class Dog extends Animal {
say() {
console.log("bark");
}
}
/**
* Cat.
*
* @class Cat
* @extends {Animal}
*/
class Cat extends Animal {
say() {
console.log("meow");
}
}
/**
* Horse.
*
* @class Horse
* @extends {Animal}
*/
class Horse extends Animal {}
और परिणाम ...
// RESULTS
new Dog().eat(); // eating
new Cat().eat(); // eating
new Horse().eat(); // eating
new Dog().say(); // bark
new Cat().say(); // meow
new Horse().say(); // Error: Method say() must be implemented.
new Animal(); // Error: Abstract classes can't be instantiated.