ð€¯ åºæïŒã³ãŒããã³ããŒïŒããŒã¹ãããæªå€¢ããããããªãïŒ
ååã®èšäºã§ãã¯ã©ã¹ã䜿ã£ãŠããŒã¿ãšåŠçãäžã€ã«ãŸãšããæ¹æ³ãåŠã³ãŸããããããããããã§ãŸãäžã€å£ã«ã¶ã€ãããŸãã
äŸãã°ãWebãµã€ãã§ã管çè ïŒAdminïŒããšãäžè¬ãŠãŒã¶ãŒïŒGuestïŒãã®äž¡æ¹ã管çããå¿ èŠãåºãŠãããšããŸãã
- äžè¬ãŠãŒã¶ãŒïŒååãã¡ãŒã«ã¢ãã¬ã¹ããã°ã€ã³/ãã°ã¢ãŠãæ©èœ
- 管çè ïŒååãã¡ãŒã«ã¢ãã¬ã¹ããã°ã€ã³/ãã°ã¢ãŠãæ©èœ ïŒ ããŒã¿å逿©èœ
ãã®ãšãããã管çè
ã¯ã©ã¹ãäœãããã«ãäžè¬ãŠãŒã¶ãŒã®ã¯ã©ã¹ã®äžèº«ãäžžããšã³ããŒïŒããŒã¹ãããdeleteData()颿°ã ãã远å ãããã©ããªãã§ããããïŒã³ãŒããéè€ããå
ã®ã¯ã©ã¹ã«ãã°ãèŠã€ãããšãäž¡æ¹ã®ã¯ã©ã¹ãä¿®æ£ãããšããå°çã®ãããªäœæ¥ãçºçããŸãã
ããã®çŸå Žã§ã¯ããã®ãããªã³ãŒãã®éè€ãé²ãããã«ã**ç¶æ¿ïŒInheritanceïŒ**ãšãã究極ã®åå©çšãã¯ããã¯ã䜿ããŸãã
1. ð€ ç¶æ¿ãšã¯ïŒã芪ããšãåãã®é¢ä¿
ç¶æ¿ãšã¯ãããã¯ã©ã¹ïŒèŠªã¯ã©ã¹ããŸãã¯ã¹ãŒããŒã¯ã©ã¹ïŒã®ãã¹ãŠã®ããããã£ãšã¡ãœããããå¥ã®ã¯ã©ã¹ïŒåã¯ã©ã¹ããŸãã¯ãµãã¯ã©ã¹ïŒãåŒãç¶ãä»çµã¿ã§ãã
åã¯ã©ã¹ã¯ã芪ã¯ã©ã¹ã®ãã¹ãŠã®æ©èœãç¡æã§æã«å ¥ããããã«èªåç¬èªã®æ°ããæ©èœã ãã远å ã§ããŸãã
ç¶æ¿ã®ã¡ãªããïŒããºãçç±ïŒ
- ã³ãŒãã®éè€ãŒãïŒå ±éã®ããžãã¯ã¯èŠªã¯ã©ã¹ã«äžã€ã ãæžãã°OKã
- ç¥ã¡ã³ãæ§ïŒå ±éæ©èœïŒäŸïŒãã°ã€ã³åŠçïŒã«ä¿®æ£ãå¿ èŠãªå Žåã芪ã¯ã©ã¹ã ãçŽãã°ããã¹ãŠã®åã¯ã©ã¹ã«èªåã§é©çšãããŸãã
2. ð ç¶æ¿ã®ä»çµã¿ïŒextendsãšsuperããŒã¯ãŒã
JavaScriptã§ç¶æ¿ãå®çŸããã«ã¯ãäž»ã«2ã€ã®ããŒã¯ãŒãã䜿ããŸãã
2-1. extendsïŒèŠªã¯ã©ã¹ãæå®ãã
æ°ããåã¯ã©ã¹ãå®çŸ©ããéãã¯ã©ã¹åã®åŸã« extends 芪ã¯ã©ã¹å ãšèšè¿°ããã ãã§ã芪ã¯ã©ã¹ã®æ©èœããã¹ãŠåŒãç¶ããŸãã
2-2. super()ïŒèŠªã®ã³ã³ã¹ãã©ã¯ã¿ãŒãåŒã³åºã
åã¯ã©ã¹ã«constructorãå®çŸ©ããå Žåãå¿
ããã®äžçªæåã« super() ãåŒã³åºãå¿
èŠããããŸãã
super()ã¯ãã芪ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒãå®è¡ããŠãããšããæç€ºã§ãã- ããã«ããã芪ã¯ã©ã¹ã§å®çŸ©ãããåæããããã£ïŒäŸïŒ
this.name,this.emailïŒãæ£ããåã¯ã©ã¹ã«ãèšå®ãããŸãã
ð ç¶æ¿ã®å®è·µã³ãŒã
JavaScript
// ã芪ã¯ã©ã¹ãäžè¬ãŠãŒã¶ãŒã®èšèšå³
class User {
constructor(name, email) {
this.name = name;
this.email = email;
this.isLoggedIn = false;
}
login() {
this.isLoggedIn = true;
console.log(`${this.name}: ãã°ã€ã³ããŸããã`);
}
}
// --------------------------------------------------------------------
// ãåã¯ã©ã¹ã管çè
ã¯ã©ã¹ã®èšèšå³ (Userã¯ã©ã¹ãç¶æ¿)
class Admin extends User {
constructor(name, email, role) {
// 1. super()ã§èŠª(User)ã®åæååŠçãåŒã³åºã
super(name, email);
// 2. åã¯ã©ã¹ç¬èªã®ããããã£ã远å
this.role = role || 'Super Admin';
}
// åã¯ã©ã¹ç¬èªã®ã¡ãœããã远å
deleteData(dataId) {
if (this.isLoggedIn) {
console.log(`管çè
${this.name}ãããŒã¿ID: ${dataId} ãåé€ããŸããã`);
return true;
}
console.log("åé€ã«ã¯ãã°ã€ã³ãå¿
èŠã§ãã");
return false;
}
}
3. ð§ª ç¶æ¿ãããã¯ã©ã¹ã䜿ã£ãŠã¿ã
Adminã¯ã©ã¹ã¯ãç¬èªã®deleteData()ã¡ãœãããæã£ãŠããã ãã§ãªããUserã¯ã©ã¹ã®login()ã¡ãœããããã®ãŸãŸäœ¿ããŸãã
JavaScript
const admin = new Admin("ç°äžç®¡çè
", "admin@corp.com");
// 1. 芪ã¯ã©ã¹ã®ã¡ãœãããå®è¡
admin.login(); // çµæ: ç°äžç®¡çè
: ãã°ã€ã³ããŸããã
// 2. åã¯ã©ã¹ç¬èªã®ã¡ãœãããå®è¡
admin.deleteData(101); // çµæ: 管çè
ç°äžç®¡çè
ãããŒã¿ID: 101 ãåé€ããŸããã
// 3. 芪ã¯ã©ã¹ã®ããããã£ã«ãã¢ã¯ã»ã¹å¯èœ
console.log(admin.isLoggedIn); // çµæ: true
ãã®ããã«ãç¶æ¿ã䜿ãããšã§ãã³ãŒããæžãéã¯æå°éã«æããããéåžžã«èªã¿ããããæ¡åŒµæ§ã®é«ãã·ã¹ãã ãæ§ç¯ã§ããã®ã§ãã
ð ãŸãšãïŒextendsã§ã³ãŒããå¹ççã«é²åãããïŒ
ç¶æ¿ã¯ããªããžã§ã¯ãæåããã°ã©ãã³ã°ã®æ žå¿ã§ãããå€§èŠæš¡ãªWebã¢ããªã±ãŒã·ã§ã³ãéçºããäžã§å¿ é ã®ãã¯ããã¯ã§ãã
extendsïŒèŠªã¯ã©ã¹ã®ãã¹ãŠã®æ©èœãåŒãç¶ãïŒç¶æ¿ïŒãsuper()ïŒåã¯ã©ã¹ã®constructorã®æåã«å¿ ãåŒã³åºãã芪ã¯ã©ã¹ã®åæèšå®ãè¡ãã- ã¡ãªããïŒã³ãŒãã®éè€ãé¿ããå ±éã®ããžãã¯ã芪ã¯ã©ã¹ã«äžæ¬åããããšã§ãã¡ã³ããã³ã¹ãåçã«æ¥œã«ãªãã
仿¥ããæ°ããã¯ã©ã¹ãäœãéã¯ãããã§ã«äŒŒãæ©èœãæã€ã¯ã©ã¹ã¯ãªããïŒããæèããããã°ç¶æ¿ã䜿ã£ãŠã¹ããŒãã«ã³ãŒããåå©çšããŸãããïŒããã§ããªãã¯ãã³ãŒãã®ã建ç¯å®¶ããã**ãã·ã¹ãã ã®é²åè«è ã**ãžãšã¹ãããã¢ããããŸãïŒ

