Trong lập trình hướng đối tượng (OOP), “ghi đè hàm” (tiếng Anh: method overriding) là khái niệm khi một class con định nghĩa lại một phương thức đã có trong class cha.


🔹 Cụ thể:

  • Class cha có method:
class ParentClass {
    public function hello() {
        echo "Hello từ cha";
    }
}
  • Class con ghi đè method:
class ChildClass extends ParentClass {
    public function hello() {
        echo "Hello từ con";
    }
}
  • Khi gọi:
$obj = new ChildClass();
$obj->hello(); // Kết quả: Hello từ con

PHP sẽ dùng method của class con, bỏ qua method của class cha.


🔹 Nếu muốn vẫn dùng method cha

class ChildClass extends ParentClass {
    public function hello() {
        parent::hello(); // gọi method cha
        echo " + thêm từ con";
    }
}

Kết quả:

Hello từ cha + thêm từ con

🔹 Lưu ý

  1. Chỉ public/protected method mới ghi đè được.
  2. Private method không thể ghi đè vì class con không thấy method private của cha.
  3. Đây là một phần quan trọng của đa hình (Polymorphism) trong OOP.

✅ Tóm lại:

  • “Ghi đè hàm” = method overriding = class con định nghĩa lại method của class cha.
  • Cho phép thay đổi hành vi nhưng vẫn có thể gọi method gốc bằng parent::methodName().