Bài 07: Nạp Chồng – Ghi Đè OPP PHP

Hôm này chúng ta cùng tìm hiểu về cơ chế Nạp chồng và Ghi đè(nó thuộc về mộ trong 3 tính chất quan trọng của OPP) trong lập trình hướng đối tượng PHP. Để bạn hiểu tóm tắt nhất thì tôi có thể tổng kết như sau. Nạp chồng : Là việc chúng ra khai báo nhiều phương thức trùng tên nhưng khác nhau về ...

Hôm này chúng ta cùng tìm hiểu về cơ chế Nạp chồng và Ghi đè(nó thuộc về mộ trong 3 tính chất quan trọng của OPP) trong lập trình hướng đối tượng PHP. Để bạn hiểu tóm tắt nhất thì tôi có thể tổng kết như sau.

  • Nạp chồng: Là việc chúng ra khai báo nhiều phương thức trùng tên nhưng khác nhau về tham số.
  • Ghi đè: Là việc ta khai báo các phương thức của lớp con trùng tên với các phương thức ở lớp cha.

1. Nạp Chồng(Overloading)

Việc khai báo trong một lớp có nhiều phương thức cùng tên nhưng khác tham số (khác kiểu dữ liệu, khác số lượng tham số) gọi là khai báo chồng phương thức (overloading method). Hay ngắn ngọn theo từng ý như phía dưới để các bạn dễ hiểu hơn.

  • Các phương thức nằm trong cùng 1 lớp , có cùng tên với nhau nhưng có danh sách đối số khác nhau được gọi là các phương thức nạp chồng.
  • Hàm tạo cũng có thể được nạp chồng.
  • Tùy theo ta gọi đối số thế nào mà nó sẽ gọi hàm tương ứng.
  • Nạp chồng là hình thức đa hình (polymorphism) trong quá trình biên dịch (compile time).

Ví dụ:

class Animal{
    function an(){
        echo 'Động vật đang ăn';
    }
    function an($con=NULL){
        echo 'Con '.$con.' dang ăn';
    }
}
 // Kahi báo một đối tượng
$a = new Animal();
$a->an();//Kết quả: Con trâu đang ăn
$a->an("Chó");//Kết quả: Con chó đăng ăn

    2. Ghi đè(Override)

    Trong PHP, nếu như người lập trình tạo ra một phương thức trong lớp con có trùng tên với một phương thức đã được tạo ở lớp cha thì đó được gọi là ghi đè phương thức(Method Overriding). Hoặc một cách dễ hiểu hơn như sau.

    • Là Phương thức đã xuất hiện ở lớp cha và xuất hiện tiếp ở lớp con.
    • Khi đối tượng thuộc lớp con gọi phương thức thì sẽ chọn lựa và chạy theo phương thức trong lớp con.
    • Nếu lớp con không có phương thức đó thì mới lên kiếm ở lớp cha để chạy
    • Ghi đè là hình thức đa hình (polymorphism) trong quá trình thực thi (Runtime)

    Ví dụ:

    class Animal{
        public function an(){
            echo 'Animal dang ăn';
        }
    }
    class Dog extends testParent{
        function an(){
            //Overriding function an{
            echo 'Dog đang ăn';
        }
    }
     // Kahi báo một đối tượng
    $a = new Dog();
    $a->an();//Kết quả: Dog đang ăn

    Lưu ý với các bạn khi viết lại hàm thì các biến truyền vào hàm ở lớp cha và lớp con phải khớp nhau, nghĩa là hàm ở lớp cha truyền vào bao nhiêu tham số thì hàm ở lớp con truyền vào bấy nhiêu tham số.

    Như vậy ở bài này mình đã giới thiệu đến các bạn hai khái niệm cơ bản và rất quan trọng trong lập trình hướng đối tượng nói chung và trong PHP nói riêng. Chúc các bạn thành công!

    0