Kế thừa lồng trong php

Trong bài này chúng ta tìm hiểu kế thừa lồng trong PHP và nguyên tắc hoạt động của ba mực độ truy cập private, protected và public. Trước tiên chúng ta tìm hiểu khái niệm kế thừa lồng là gì đã nhé.

test php

banquyen png

Bài viết này được đăng tại phpbbvietnam.com, không được copy dưới mọi hình thức.

1. Kế thừa lồng là gì?

Kế thừa lồng  hay còn gọi là kế thừa nhiều lớp, nghĩa là một lớp được kế thừa từ nhiều lớp. Lớp B kế thừa lớp A, lớp C kế thừa lớp B và thế là ta có luồng kế thừa  A -> B -> C. Một ví dụ khác thực tế hơn, giả sử Ông mình sinh ra Ba mình, Ba mình sinh ra mình như vậy mình kế thừa dòng máu của Ông mình và Ba mình.

Ví dụ:

class A {
 
}
 
class B extends A {
 
}
 
class C extends B {
 
}

Nhìn ví dụ thật đơn giản phải không nào, nhưng đi sâu vào bên trong nó không đơn giản tí nào đâu. Vấn đề đặt ra là khi kế thừa nhiều cấp như vậy thì các biến (thuộc tính), các hàm (phương thức) ở các lớp cha được sử dụng ở lớp con như thế nào ? Để hiểu rõ hơn vấn đề này ta sẽ đi qua phần hai.

Bài viết này được đăng tại [phpbbvietnam.com]

2. Các mức độ truy cập trong kế thừa lồng

Như ta đã biết có 3 mức độ truy cập hay dùng nhất đó là private, public và protected. Cũng như trong kế thừa một cấp, tất cả những biến (thuộc tính) và hàm (phương thức) ở dạng public thì ở tất cả các lớp con dù ở cấp độ nào nó cũng có thể truy xuất vào được. Nếu ở dạng private thì chỉ dùng trong lớp đó. Nếu ở dạng protected thì tất cả các lớp kế thừa nó dù là lồng bao nhiêu lần thì cũng có thể sử dụng. Định nghĩa này chúng ta đã được học ở bài trước và cũng được giữ nguyên cho bài kế thừa lồng này.

Read More:   Viết class xử lý database trong hướng đối tượng (phần 1)

Ví dụ:

// Lớp A
class A
{
    protected $protected_A = 'Protected';
    private $private_A = 'Private';
    public $public_A = 'Public';
 
    private function showPrivate()
    {
        echo $this->private_A;
    }
 
    protected function showProtected()
    {
        echo $this->protected_A;
    }
 
    public function showPublic()
    {
        echo $this->public_A;
    }
}
 
// Lớp B Kế Thừa Lớp A
class B extends A
{
    public function ClassB()
    {
        echo $this->protected_A;
    }
}
 
// Lớp C Kế Thừa Lớp B
class C extends B
{
    public function showInfo()
    {
        // Lệnh này đúng vì nó truy xuất vào thuộc tính protected
        $this->protected_A = 'Nguyễn Văn A';
 
        // Lệnh này đúng vì nó truy xuất vào thuộc tính public
        $this->public_A = 'Nguyễn Văn B';
 
        // Lệnh này sai vì nó truy xuất vào thuộc tính private
        $this->private_A = 'Lệnh sai';
    }
}
 
// ------------------//
// Chương trình chính//
// ------------------//
 
// Khởi tạo lớp C
// Lớp C được kế thừa từ lớp B
// mà lớp B kế thừa từ lớp A nên
// suy ra nó kế thừa từ 2 lớp A, B
$c = new C();
 
// Lệnh này đúng vì gọi đến hàm public của lớp cha A
$c->showPublic();
 
// Lệnh này sai vì nó gọi hàm protected của lớp cha A
$c->showProtected();
 
// Lệnh này sai vì nó gọi hàm private của lớp cha A
$c->showPrivate();
 
// Lệnh này đúng vì nó truy xuất vào hàm public của lớp cha B
$c->ClassB();

Qua các phần ghi chú trong ví dụ tôi đã giải thích cho các bạn rồi. Như vậy là các bạn thấy nó cũng không có gì đặc biệt đúng không nào.

3. Lời kết

Qua bài học này các bạn đã hiểu được kế thừa lồng thực bản chất nó cũng là kế thừa nên có thể áp dụng các tính chất của kế thừa để áp đặt vào nó. Bài tiếp theo chúng ta sẽ tìm hiểu khi nào sử dụng private protected và public

Read More:   Lớp trừu tượng abstract trong php oop

Danh sách file tải về

Bài viết này, The Learn PHP Tutorial Đã gửi đến bạn đọc kiến thức về “Kế thừa lồng trong php❤️️”. Admin hy vọng qua phần nội dung trong bài”Kế thừa lồng trong php” có thể giúp bạn đọc có thêm kiến thức về “Kế thừa lồng trong php trong quá trình tự học PHP của mình .

Bài viết “Kế thừa lồng trong php” posted by on 2022-07-02 12:58:55. Cảm ơn bạn đọc đã xem bài viết tại Phpbbvietnam.com Và đừng quên chia sẻ bài viết này để nhiều người khác cũng có thể xem tài liệu học php miễn phí này nhé.

Check Also
Close
Back to top button