Menu
CoddyTech

Quan hệ "là một"

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 25 trên 56.

Mối quan hệ “là một” là cách kiểm tra đơn giản để xác định khi nào nên dùng tính kế thừa. Nếu bạn có thể nói “X là một Y” và câu đó nghe hợp lý, thì có lẽ X nên kế thừa từ Y.

Đúng (dùng tính kế thừa):

  • "Chó là một loài động vật" → class Dog extends Animal
  • "Car là một Vehicle" → class Car extends Vehicle
  • “Một cuốn sách giáo khoa là một cuốn sách” → class Textbook extends Book

Chưa đúng (không dùng tính kế thừa):

  • "Một tài xế là một chiếc xe" → Không, tài xế sử dụng xe
  • "Một bánh xe là một chiếc ô tô" → Không, bánh xe là một bộ phận của ô tô
  • "A Student is a Classroom" → Không, học sinh ở trong lớp học

Ví dụ, hãy xét hai đối tượng:

// Lớp cơ sở: bản chất chung của tất cả các lớp này
class Book {
  constructor(title, author, pages) {
    this.title = title;
    this.author = author;
    this.pages = pages;
  }
  
  read() {
    console.log(`Reading ${this.title} by ${this.author}`);
  }
}
// Novel là một Book (quan hệ kế thừa đúng)
class Novel extends Book {
  constructor(title, author, pages, genre) {
    super(title, author, pages);
    this.genre = genre;
  }
}
// Sử dụng các lớp (class)
const fiction = new Novel("1984", "George Orwell", 328, "Dystopian");
fiction.read();    // "Reading 1984 by George Orwell", kế thừa từ Book
challenge icon

Thử thách

Bạn được cung cấp một lớp (class) ElectronicDevice và một lớp Smartphone. Smartphone là một loại ElectronicDevice có thêm tính năng. Nhiệm vụ của bạn là tạo một đối tượng `myPhone` có thương hiệu "Samsung" và mẫu “Galaxy S23”.

Tự làm thử

import { ElectronicDevice } from './electronicDevice.js';
import { Smartphone } from './smartphone.js';


// TODO: Tạo đối tượng (object) `myPhone` có thương hiệu "Samsung" và mẫu “Galaxy S23”.


// Code kiểm thử, không chỉnh sửa
console.log(myPhone.turnOn());  // Đầu ra phải là "Samsung Galaxy S23 is now ON"
quiz iconTự kiểm tra

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

Tự luyện tập: Trình biên dịch JavaScript online