JavaScript හි OOP හි අධිප්රේරිත ක්රමයක් ඇමතීම
අධිප්රේරණය කිරීමේදී, උරුමක් ගන්නා තැනැත්තාට
අධිප්රේරිත ක්රමයට ප්රවේශය නැති වේ.
කෙසේ වෙතත්, ඒවාට ප්රවේශ විය හැකිය.
මෙය සිදු කරනු ලබන්නේ 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 පංතිය තුළ,
වයස් සැකසීමේ ක්රමය සරල කරන්න,
දෙමව්පියන්ගේ මුල් ක්රමය භාවිතා කරමින්.