PHP NÂNG CAO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Bài 07: 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é.

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.

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

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

Tổng hợp dữ liệu trong bài:

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top