Tính đóng gói và kế thừa

jk5587725

By jk5587725

Cập nhật Tháng 9 23, 2025

Trong lập trình hướng đối tượng (OOP), đóng gói (encapsulation)kế thừa (inheritance) là hai nguyên lý cốt lõi giúp tổ chức và mở rộng hệ thống một cách hiệu quả, rõ ràng và dễ bảo trì.


Đóng gói (Encapsulation)

Đóng gói là việc che giấu chi tiết bên trong của class và chỉ cho phép truy cập thông qua các phương thức (methods) được xác định sẵn.

Ví dụ đơn giản:
class BankAccount {
  private $balance = 0;

  public function deposit($amount) {
    if ($amount > 0) {
      $this->balance += $amount;
    }
  }

  public function getBalance() {
    return $this->balance;
  }
}

Giải thích:

  • Thuộc tính $balanceprivate, nên không thể truy cập trực tiếp từ bên ngoài class.
  • Muốn thao tác với nó, phải dùng phương thức deposit() hoặc getBalance().
  • Đây chính là đóng gói dữ liệu: bảo vệ nội dung bên trong và chỉ cho phép tương tác thông qua giao diện an toàn.

Kế thừa (Inheritance)

Kế thừa là việc một class con được thừa hưởng các thuộc tính và phương thức của class cha, đồng thời có thể mở rộng hoặc ghi đè (override) các phương thức nếu cần.

Ví dụ:
class Animal {
  protected $name;

  public function __construct($name) {
    $this->name = $name;
  }

  public function speak() {
    return "$this->name makes a sound.";
  }
}

class Dog extends Animal {
  public function speak() {
    return "$this->name says Woof!";
  }
}
Sử dụng:
$dog = new Dog("Toto");
echo $dog->speak();  // Kết quả: Toto says Woof!

Giải thích:

  • Class Dog kế thừa từ Animal → được sử dụng lại thuộc tính $name và phương thức __construct().
  • Ghi đè (override) phương thức speak() để có hành vi riêng.
  • Điều này giúp ta tái sử dụng code hiệu quả và mở rộng linh hoạt cho nhiều đối tượng.

Tóm lại:

Khái niệmTác dụng chính
Đóng góiBảo vệ dữ liệu, kiểm soát truy cập
Kế thừaTái sử dụng mã, mở rộng chức năng

Trong thực tế, bạn sẽ thường kết hợp cả hai để xây dựng các hệ thống lớn, có cấu trúc rõ ràng, dễ bảo trì và mở rộng.


👉 Bài tiếp theo chúng ta sẽ tìm hiểu cách autoload class để code sạch hơn và không cần include thủ công mỗi lần sử dụng class.

Thảo luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận tin mới

Nhận bài học, tài nguyên và cơ hội việc làm qua email hàng tuần.

[global_subscribe_form]

Chúng tôi cam kết không spam. Bạn có thể hủy bất cứ lúc nào.