PHP có hỗ trợ kế thừa đa cấp không

Kế thừa là một trong những tính năng lập trình hướng đối tượng được sử dụng phổ biến. Nó cho phép có các thuộc tính và chức năng được chia sẻ giữa các lớp liên quan. Tính năng này cho phép chúng tôi liên kết các lớp, dữ liệu và phương thức trừu tượng và tăng khả năng sử dụng lại

Một trong những thay đổi đáng chú ý khi di chuyển từ PHP phiên bản 4 sang PHP phiên bản 5 là giới thiệu tính năng Lập trình hướng đối tượng như chúng ta đã thấy trong Sự phát triển của PHP. Trong số các tính năng OOPS hạn chế được PHP hỗ trợ, tính kế thừa là một khái niệm hấp dẫn bằng cách cung cấp các chức năng được liệt kê ở trên

Trước khi tìm hiểu về kế thừa PHP, chúng ta hãy làm mới ý tưởng về kế thừa và các loại của nó nói chung. Theo nguyên tắc này, một lớp có thể được dẫn xuất từ ​​một lớp khác, trong khi lớp dẫn xuất được gọi là lớp con hoặc lớp con và lớp kia được gọi là lớp cha hoặc lớp cha

Lớp cha có các thuộc tính và chức năng riêng có thể được dẫn xuất từ ​​lớp con và thêm vào đó, lớp con có thể có các thuộc tính riêng của nó

Giờ đây, ưu điểm của tính kế thừa là không cần phải xác định lại các thuộc tính cần thiết của siêu lớp một lần nữa trong lớp con vì chúng có thể được kế thừa. Đó là những gì chúng tôi đã nói rằng tính kế thừa làm tăng khả năng sử dụng lại và giảm các dòng mã và do đó nó làm tăng tính đơn giản giữa các lớp có liên quan với nhau

Các loại kế thừa PHP

Nói chung, kế thừa có ba loại, kế thừa đơn, đa cấp và đa cấp. Tuy nhiên, PHP hỗ trợ kế thừa đơn và kế thừa đa cấp. Điều đó có nghĩa là lớp con sẽ được bắt nguồn từ lớp cha. Mặc dù PHP không hỗ trợ nhiều kế thừa, nhưng chúng ta có thể mô phỏng nó bằng cách sử dụng các giao diện PHP

Trong PHP, việc kế thừa có thể được thực hiện bằng cách sử dụng từ khóa extends, nghĩa là chúng ta đang mở rộng lớp dẫn xuất với một số thuộc tính và phương thức bổ sung của lớp cha của nó. Cú pháp kế thừa một lớp như sau

Child_class_name extends Parent_class_name {
...
}

Ghi chú. Chúng ta có thể kế thừa các thuộc tính và hàm của lớp cha khi và chỉ khi chúng có công cụ sửa đổi truy cập công khai hoặc được bảo vệ

Kế thừa đơn PHP

Để triển khai khái niệm kế thừa duy nhất trong PHP, chúng tôi yêu cầu hai lớp, một lớp là cha và lớp kia là lớp con. Chúng ta hãy có hai lớp như vậy có tên là Đồ chơi và Đồ chơi mềm, tương ứng như hình bên dưới

đồ chơi đẳng cấp

 "Mechanical Cars",
            "category" => "pull back"
        ],
        array[
            "name" => "Jigsaw",
            "category" => "puzzles"
        ],
        array[
            "name" => "HiTech Cars",
            "category" => "remote"
        ],
        array[
            "name" => "Teddy Bears",
            "category" => "soft"
        ],
        array[
            "name" => "Baby pillow",
            "category" => "soft"
        ],
        array[
            "name" => "Chinese Checker",
            "category" => "puzzles"
        ],
        array[
            "name" => "Jumbo Helicopter",
            "category" => "remote"
        ]
    ];

    function getToys[]
    {
        for [$i = 0; $i < count[$this->toys]; $i ++] {
            $toys_list[] = $this->toys[$i]["name"];
        }
        return $toys_list;
    }

    function getToysByCategory[$category]
    {
        for [$i = 0; $i < count[$this->toys]; $i ++] {
            if [$this->toys[$i]["category"] == $category]
                $toys_list[] = $this->toys[$i]["name"];
        }
        return $toys_list;
    }
}
?>

Lớp này bao gồm các thuộc tính như danh sách các danh mục trong một mảng và cũng có toàn bộ thông tin đồ chơi trong một mảng kết hợp. Sau đó, getToys[] được sử dụng để lấy tất cả đồ chơi, trong khi đó, getToysByCategory[] trả về danh sách đồ chơi theo danh mục của nó được truyền dưới dạng đối số

Lớp Đồ Chơi Mềm

getToysByCategory[$this->category];
    }
}
?>

Lớp này bắt nguồn từ lớp Đồ chơi và ghi đè phương thức getToys[] của nó để chỉ trả về danh sách đồ chơi mềm

Sau khi định nghĩa hai lớp, bây giờ là lúc truy cập các thuộc tính và chức năng của chúng thông qua thể hiện của các lớp này, để xem tác dụng của tính kế thừa. Đối với điều đó, các thể hiện của lớp được tạo như sau, bên ngoài định nghĩa lớp


Và các thuộc tính và chức năng được truy cập bằng cách sử dụng đoạn mã sau

";
print_r[$objToys->categories];
print_r[$objSoftToys->categories];
print_r[$objToys->getToys[]];
print_r[$objSoftToys->getToys[]];
print "
"; ?>

Vì lớp SoftToys có nguồn gốc từ lớp Đồ chơi, nên việc truy cập thuộc tính danh mục bằng cách sử dụng một trong hai thể hiện của lớp sẽ in cùng một mảng kết quả như,

Array
[
    [0] => puzzles
    [1] => pull back
    [2] => remote
    [3] => soft
]

Tuy nhiên, hàm getToys[] được ghi đè trong lớp con. Vì vậy, truy cập phương thức này bằng cách sử dụng thể hiện của lớp Đồ chơi hoặc SoftToys sẽ in một bộ danh sách đồ chơi khác cho trình duyệt như hình bên dưới

PHP hỗ trợ bao nhiêu kiểu kế thừa?

Kế thừa có ba loại , Kế thừa đơn, nhiều và đa cấp. PHP chỉ hỗ trợ kế thừa đơn, trong đó chỉ có một lớp có thể được dẫn xuất từ ​​lớp cha đơn. Chúng ta có thể mô phỏng đa kế thừa bằng cách sử dụng các giao diện.

Tại sao chúng ta không sử dụng đa kế thừa trong PHP?

Đa kế thừa hữu ích trong nhiều tình huống với tư cách là nhà phát triển, nhưng nó làm tăng đáng kể độ phức tạp của ngôn ngữ, khiến cuộc sống của cả nhà phát triển trình biên dịch và lập trình viên trở nên khó khăn hơn. One problem occurs when two parent classes have data members or methods of the same name.

Có cho phép thừa kế đa cấp không?

Giải thích. Kế thừa nhiều cấp độ cho phép bất kỳ cấp độ kế thừa nào . Đây là tính năng linh hoạt tối đa để cung cấp các thành viên cho tất cả các lớp mới và thêm các chức năng của riêng chúng. Khả năng sử dụng lại mã cũng được sử dụng.

Ngôn ngữ lập trình nào không hỗ trợ kế thừa đa cấp?

4. Ngôn ngữ lập trình nào hạn chế sử dụng đa thừa kế? . Java không cho phép sử dụng đa kế thừa với các lớp.

Chủ Đề