Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
klasi [2023/11/21 19:36] tro |
klasi [2023/11/21 19:43] (текущий) tro |
||
|---|---|---|---|
| Строка 192: | Строка 192: | ||
| console.log(mango.email); | console.log(mango.email); | ||
| </ | </ | ||
| + | ===== Наслідування класів ===== | ||
| + | **extends** дозволяє реалізувати наслідування класів, | ||
| + | < | ||
| + | class Parent {} | ||
| + | |||
| + | class Child extends Parent { | ||
| + | // ... | ||
| + | } | ||
| + | </ | ||
| + | ===== Конструктор дочірнього класу ===== | ||
| + | super(args) — це псевдонім конструктора батьківського класу. | ||
| + | < | ||
| + | class User { | ||
| + | #email; | ||
| + | |||
| + | constructor(email) { | ||
| + | this.#email = email; | ||
| + | } | ||
| + | |||
| + | get email() { | ||
| + | return this.# | ||
| + | } | ||
| + | |||
| + | set email(newEmail) { | ||
| + | this.#email = newEmail; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | class ContentEditor extends User { | ||
| + | constructor({ email, posts }) { | ||
| + | super(email); | ||
| + | this.posts = posts; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | const editor = new ContentEditor({ | ||
| + | email: " | ||
| + | posts: [] | ||
| + | }); | ||
| + | console.log(editor); | ||
| + | console.log(editor.email); | ||
| + | </ | ||
| + | ===== Методи дочірнього класу ===== | ||
| + | Дочірній клас може використовувати методи та властивості батьківського класу. Крім цього, у дочірньому класі можна оголошувати методи, | ||
| + | < | ||
| + | // Уявімо, | ||
| + | |||
| + | class ContentEditor extends User { | ||
| + | constructor({ email, posts }) { | ||
| + | super(email); | ||
| + | this.posts = posts; | ||
| + | } | ||
| + | |||
| + | addPost(post) { | ||
| + | this.posts.push(post); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | const editor = new ContentEditor({ | ||
| + | email: " | ||
| + | posts: [] | ||
| + | }); | ||
| + | |||
| + | console.log(editor); | ||
| + | |||
| + | editor.addPost(" | ||
| + | editor.addPost(" | ||
| + | console.log(editor.posts); | ||
| + | </ | ||
| + | У прикладі бачимо, | ||
| + | |||
| + | * User — це базовий клас, який має приватну властивість #email. | ||
| + | * ContentEditor розширює клас User і має власну властивість posts. Клас ContentEditor також має метод addPost, який дозволяє додавати нові повідомлення до posts. | ||