Kế thừa thuộc tính và phương thức
Thuộc phần Lập trình hướng đối tượng trong hành trình JavaScript của Coddy. Bài học 28 trên 56.
Khi một lớp kế thừa lớp khác, nó kế thừa tất cả thuộc tính và phương thức từ lớp cha. Điều này có nghĩa là các lớp con tự động có quyền truy cập vào mọi thứ được định nghĩa trong lớp cha.
Hãy tạo một lớp cha có các thuộc tính và phương thức:
class Animal {
constructor(name, age) {
this.name = name;
this.age = age;
}
eat() {
return `${this.name} is eating`;
}
sleep() {
return `${this.name} is sleeping`;
}
}Bây giờ, hãy tạo một lớp con kế thừa từ Animal:
class Dog extends Animal {
constructor(name, age, breed) {
super(name, age);
this.breed = breed;
}
}Tạo một đối tượng thuộc lớp Dog:
const rex = new Dog("Rex", 3, "German Shepherd");Giờ đây, dù chúng ta không định nghĩa eat() và sleep() trong lớp Dog, ta vẫn có thể dùng các phương thức này:
console.log(rex.eat()); // Đầu ra: Rex đang ăn
console.log(rex.sleep()); // Đầu ra: Rex đang ngủVà chúng ta có thể truy cập tất cả thuộc tính được kế thừa:
console.log(rex.name); // Đầu ra: Rex
console.log(rex.age); // Đầu ra: 3
console.log(rex.breed); // Đầu ra: German ShepherdThử thách
Tạo lớp Cake kế thừa từ Dessert và xuất lớp đó. Lớp Cake cần có:
- Tất cả thuộc tính và phương thức kế thừa từ Dessert
- Một thuộc tính mới
flavor - Một phương thức mới
addCandles()trả về chuỗi “Added candles to ${this.name}!”
Tự làm thử
import { Dessert } from './desserts.js';
import { Cake } from './desserts.js';
// Code kiểm tra, đừng chỉnh sửa
const myCake = new Cake("Birthday Cake", 300, "Chocolate");
console.log(myCake.describe()); // Đầu ra phải là "Birthday Cake has 300 calories"
console.log(myCake.flavor); // Đầu ra phải là "Chocolate"
console.log(myCake.addCandles()); // Đầu ra phải là "Added candles to Birthday Cake!"Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Lập trình hướng đối tượng
1Đối tượng và từ khóa this
Ôn nhanh: đối tượngThêm phương thức vào đối tượngTìm hiểu từ khóa thisHàm khởi tạoTừ khóa newThử thách ôn tập7Kế thừa và từ khóa extends
Kế thừaQuan hệ "là một"Từ khóa extendsPhương thức super()Kế thừa thuộc tính và phương thứcThử thách ôn tập13Kết hợp hay kế thừa
Quan hệ “có một” và “là một”Những hạn chế của kế thừa nhiều tầngXây dựng đối tượng5Đóng gói và quyền truy cập
Đóng góiTrường công khai và trường riêng tưPhương thức riêng tưThử thách ôn tập8Tổ chức code OOP
Tổ chức các lớp thành module11Dự án: Trình hiển thị hình dạng
Thiết lập: lớp Hình dạng và xuấtKế thừa lớp Hình trònGhi đè và phương thức diện tíchBộ đếm hình dạng tĩnh6Dự án: Tài khoản ngân hàng đơn giản
Lớp BankAccountGửi tiền và rút tiềnSố dư dưới dạng thuộc tính riêng tư9Phương thức và thuộc tính tĩnh
Cấp lớp và cấp instanceThuộc tính tĩnhPhương thức tiện ích tĩnhThử thách ôn tậpTự luyện tập: Trình biên dịch JavaScript online