⊗jsOpIhPPP 36 of 60 menu

Masalah Sifat Persendirian dalam Pewarisan OOP dalam JavaScript

Hakikat bahawa sifat persendirian tidak diwarisi boleh membawa kepada masalah yang tidak dijangka. Mari kita lihat contoh. Katakan kita mempunyai kelas induk berikut dengan sifat persendirian:

class User { #age; setAge(age) { this.#age = age; } getAge() { return this.#age; } }

Katakan dalam kelas anak, kita ingin membuat kaedah yang akan menambah usia sebanyak satu. Namun, percubaan untuk mengubah sifat persendirian induk akan menyebabkan ralat:

class Student extends User { incAge() { this.#age++; // ralat } }

Ralat akan hilang jika dalam kelas anak diisytiharkan sifat persendirian #age:

class Student extends User { #age; incAge() { this.#age++; } }

Di sinilah kita terjebak! Sebenarnya, kita telah menghasilkan dua sifat persendirian: satu dalam induk dan satu dalam anak. Dan mereka beroperasi sepenuhnya secara berasingan. Ini bermakna kaedah induk akan mengubah sifat mereka sendiri, dan kaedah anak - sifat mereka sendiri.

Masalah ini sebenarnya mempunyai penyelesaian. Hanya perlu memanipulasi sifat persendirian induk melalui kaedah induk tersebut. Mari kita tulis semula kod kami menurut ini:

class Student extends User { incAge() { let age = this.getAge(); age++; this.setAge(age); } }

Boleh dipermudahkan:

class Student extends User { incAge() { this.setAge(++this.getAge()); } }

Dalam kod berikut, dalam kelas anak kaedah induk digantikan. Betulkan masalah dalam kod ini:

class User { #name; setName(name) { this.#name = name; } getName() { return this.#name; } } class Employee extends User { setName(name) { if (name.length > 0) { this.#name = name; } } }
Melayu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan kuki untuk operasi laman web, analisis dan personalisasi. Pemprosesan data dijalankan mengikut Polisi Kerahsiaan.
terima semua tataletak tolak