जावास्क्रिप्ट में ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में ओवरराइड मेथड को कॉल करना
ओवरराइडिंग करते समय, चाइल्ड क्लास
पैरेंट क्लास के ओवरराइड मेथड तक
पहुंच खो देती है। हालांकि, फिर भी इस तक
पहुंच प्राप्त की जा सकती है। यह कीवर्ड
super की मदद से किया जाता है,
जो पैरेंट क्लास को इंगित करता है।
आइए एक उदाहरण देखें, जब हमें पैरेंट मेथड तक पहुंच की आवश्यकता पड़ सकती है। मान लीजिए कि हमारे पास निम्नलिखित पैरेंट क्लास है:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
मान लीजिए कि हमने चाइल्ड क्लास में पैरेंट के मेथड को ओवरराइड कर दिया है:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
यह देखा जा सकता है कि ओवरराइड मेथड में शर्त पूरी होने पर वास्तव में पैरेंट मेथड का कोड ही निष्पादित होता है। इससे कोड की अनावश्यक नकल हो रही है।
पैरेंट मेथड को कॉल करके इस नकल से छुटकारा पाया जा सकता है। आइए इसे करते हैं:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // पैरेंट का मेथड
} else {
throw new Error('student name error');
}
}
}
निम्नलिखित कोड दिया गया है:
class User {
setAge(age) {
if (age >= 0) {
this.age = age;
} else {
throw new Error('need age more 0');
}
}
}
class Employee {
setAge(age) {
if (age <= 120) {
if (age >= 0) {
this.age = age;
} else {
throw new Error('need age more 0');
}
} else {
throw new Error('need age less 120');
}
}
}
Employee क्लास में
उम्र सेटर को सरल बनाएं, मूल
पैरेंट मेथड का उपयोग करके।