Wito wa Mbinu Iliyobadilishwa Katika OOP katika JavaScript
Wakati wa kubadilisha, mrithi hupoteza
ufikiaji wa mbinu iliyobadilishwa
ya mzazi. Hata hivyo, bado inawezekana kuupata.
Hii inafanywa
kwa kutumia neno kuu super,
ambacho kinaonyesha darasa la mzazi.
Tuangalie mfano, wakati tunaweza kuhitaji ufikiaji kwa mbinu ya mzazi. Tuchukulie tuna darasa la mzazi lifuatalo:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Tuchukulie katika darasa la mrithi tumebadilisha mbinu ya mzazi:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('kosa la jina la mwanafunzi');
}
}
}
Inaweza kubainika kuwa katika mbinu iliyobadilishwa wakati sharti linatimilika kimsingi kinatekelezwa msimbo wa mbinu ya mzazi. Inasababisha kurudia msimbo usiohitajika.
Inaweza kuepukwa, ikiwa tutaita mbinu ya mzazi. Hebu tufanye hivyo:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // mbinu ya mzazi
} else {
throw new Error('kosa la jina la mwanafunzi');
}
}
}
Kuna msimbo ufuatao:
class User {
setAge(age) {
if (age >= 0) {
this.age = age;
} else {
throw new Error('unahitaji umri zaidi ya 0');
}
}
}
class Employee {
setAge(age) {
if (age <= 120) {
if (age >= 0) {
this.age = age;
} else {
throw new Error('unahitaji umri zaidi ya 0');
}
} else {
throw new Error('unahitaji umri chini ya 120');
}
}
}
Katika darasa Employee sahihisha
kiweka umri, ukitumia
mbinu asili ya mzazi.