Học và ví dụ về tính kế thừa lồng trong php

Học và ví dụ về tính kế thừa lồng trong php là vấn đề được nhiều lập trình viên quan tâm, bởi những kiến thức trên trường lớp là không đủ, vì vậy bài Học và ví dụ về tính kế thừa lồng trong php sẽ chia sẻ tới bạn nhiều thông tin hữu ích

Mọi người vẫn hỏi tôi về việc học lập trình nói chung và PHP nói riêng có cần năng khiếu hay quá khó để tiếp cận hay không. Thì tôi có thể trả lời rằng, học lập trình cũng như việc bạn học tiếng Anh hay bất kỳ một ngôn ngữ khác, bởi lập trình...là ngôn ngữ của máy tính, để máy tính đọc và máy tính thực hiện theo yêu cầu của mình, bạn thích là học được.

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é.

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.

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.

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


Hy vọng với bài viết về Học và ví dụ về tính kế thừa lồng trong php đã giải đáp giúp bạn phần nào về kiến thức lập trình PHP. Như tôi đã nói, ngôn ngữ lập trình không quan trọng bằng tư duy giải thuật, tư duy logic để giải quyết vấn đề.

Với những năm trước đây, lập trình viên là một cái nghề khó và kén chọn người học, đồng nghĩa với việc thu nhập hàng tháng của các lập trình viên luôn cao. Còn những năm gần đây, thì lập trình là môn học phổ thông, và ai cũng nên học một ngôn ngữ lập trình nào đó.

Nếu bạn còn bất kỳ câu hỏi nào trong việc học lập trình online, hãy gửi yêu cầu cho tôi qua email hoidapcode.com@gmail.com hoặc để lại comment bên dưới, tôi sẽ giải đáp trong vòng 24 giờ!

Blog hoidapcode.com là blog được tổng hợp tự động các bài học, thông tin về lập trình trên mạng internet. Nếu bạn có ý kiến hoặc đóng góp về bài viết này, hãy liên hệ với tôi!