Hướng dẫn what are inheritance in php? - kế thừa trong php là gì?

Thừa kế là gì?

Kế thừa là một trong bốn trụ cột của lập trình hướng đối tượng (OOPS). Di truyền là hiện tượng mà lớp con có thể kế thừa tất cả các thuộc tính và đặc điểm của lớp cha. & NBSP;

Bạn có thể hiểu điều này với một ví dụ thực tế đơn giản. Hãy xem xét ví dụ về con người. Bạn thừa hưởng các đặc điểm đặc trưng từ lớp 'con người', chẳng hạn như đi bộ, ngồi, chạy, ăn uống, v.v ... Lớp 'con người' được thừa hưởng từ lớp 'Động vật có vú', các đặc điểm đặc trưng này - biến lớp 'con người' thành một lớp học có nguồn gốc từ 'Động vật có vú'. Hơn nữa, lớp ’động vật có vú có các tính năng đặc trưng của nó từ một lớp khác -‘ động vật. Điều này làm cho lớp học động vật có vú là một lớp có nguồn gốc của lớp ‘động vật; Cũng làm cho lớp học động vật & NBSP; một lớp cơ sở.

Kế thừa trong PHP

Kế thừa trong PHP là một khái niệm OOPS quan trọng và không thể bỏ qua. Hiểu được kế thừa trong PHP là cần thiết để có được cái nhìn toàn diện về các khái niệm hướng đối tượng trong PHP.

Kế thừa cung cấp cho bạn nhiều lợi ích làm cho chương trình PHP thuận tiện hơn rất nhiều. Một lợi ích như vậy là khả năng tái sử dụng mã. Khả năng tái sử dụng cho phép bạn tạo mã sạch và việc sao chép mã được giảm xuống gần như bằng không. Tái sử dụng các mã hiện tại phục vụ các lợi thế khác nhau. Nó tiết kiệm thời gian, chi phí, nỗ lực và tăng độ tin cậy của chương trình. Hơn nữa, chương trình trở nên trực quan.

PHP cung cấp chủ yếu ba loại kế thừa dựa trên chức năng của chúng. Ba loại này như sau:

  • Di truyền đơn: thừa kế đơn là loại kế thừa cơ bản hoặc cơ bản nhất được cung cấp bởi PHP. Chỉ có một lớp cơ sở và một lớp phụ/có nguồn gốc trong một kế thừa duy nhất và lớp con được kế thừa trực tiếp từ lớp cơ sở.
  • Di truyền phân cấp: Như tên cho thấy, kế thừa phân cấp áp dụng một cấu trúc giống như cây, trong đó nhiều lớp dẫn xuất được kế thừa từ lớp cơ sở.
  • Di truyền đa cấp: Di truyền đa cấp là loại kế thừa thứ ba được hỗ trợ trong PHP. Nó xảy ra ở các cấp độ khác nhau. Ở đây, một lớp cơ sở được thừa hưởng bởi một lớp dẫn xuất, sau đó lớp dẫn xuất đó được kế thừa bởi các lớp dẫn xuất khác, v.v.

Bài viết này sẽ thảo luận về tất cả các loại này một cách chi tiết, sau.

Cú pháp để kế thừa một lớp trong PHP

Được mô tả dưới đây là cú pháp được sử dụng để mở rộng lớp cơ sở trong PHP.

lớp DOIVED_CLASS_NAME mở rộng base_class_name {

& nbsp; & nbsp; & nbsp; & nbsp; // xác định các chức năng thành viên của

& nbsp; & nbsp; & nbsp; & nbsp; // lớp dẫn xuất ở đây.

}

Từ khóa mở rộng được sử dụng để xác định lớp dẫn xuất hoặc lớp con trong PHP.

  • DRIVE_CLASS_NAME: Nó chỉ định tên của lớp dẫn xuất hoặc lớp con. Lớp trẻ, còn được gọi là một lớp con, kế thừa các tính năng hoặc đặc điểm nổi bật của nó từ lớp cha. Có thể có một hoặc trên một lớp có nguồn gốc kế thừa từ cùng một lớp cơ sở tùy thuộc vào loại kế thừa được thực hiện. Có ba chế độ hiển thị được hỗ trợ trong PHP: công khai, riêng tư và được bảo vệ, trong đó xác định cách lớp dẫn xuất sẽ kế thừa những gì.
  • Base_Class_Name: Nó chỉ định tên của cơ sở hoặc lớp cha mà lớp con đang thừa hưởng các thuộc tính của nó. Một lớp cơ sở còn được gọi là lớp cha vì tất cả các lớp được gọi là các lớp dẫn xuất hoặc các lớp con kế thừa các thuộc tính của chúng từ lớp cơ sở. Có thể có một hoặc nhiều lớp cơ sở trong một chương trình, tùy thuộc vào loại kế thừa. Chẳng hạn, trong một kế thừa cấp độ, sẽ có một lớp cơ sở cho một lớp trẻ, nhưng trong một kế thừa đa cấp, một lớp con có thể thừa hưởng từ một lớp cơ sở ở nhiều cấp độ.

Truy cập các sửa đổi trong PHP

Trình sửa đổi truy cập (riêng tư, công khai hoặc được bảo vệ) được sử dụng trong định nghĩa của các chức năng thành viên và thành viên dữ liệu của lớp dẫn xuất chỉ định chế độ mà các tính năng của lớp cơ sở có nguồn gốc. Trình sửa đổi truy cập kiểm soát nơi và cách các thành viên dữ liệu và chức năng thành viên của một lớp cơ sở có thể được kế thừa bởi các lớp con. Các sửa đổi truy cập này được sử dụng để hạn chế truy cập lớp cơ sở từ lớp con để gói gọn dữ liệu. Điều này được gọi phổ biến là ẩn dữ liệu. & Nbsp; & nbsp;

Trong PHP, có ba công cụ sửa đổi truy cập: & nbsp;

  • Public:

Công cụ sửa đổi truy cập công khai cung cấp quyền riêng tư ít nhất cho các thuộc tính của lớp cơ sở. Nếu công cụ sửa đổi truy cập là công khai, điều đó có nghĩa là lớp dẫn xuất có thể truy cập vào các thành viên công khai và được bảo vệ của lớp cơ sở nhưng không phải là thành viên riêng của lớp cơ sở. & NBSP;

Ví dụ sau đây cho thấy một lớp với các thành viên công cộng:

lớp DOIVED_CLASS_NAME mở rộng base_class_name

{

& nbsp; & nbsp; // thành viên dữ liệu công cộng

& nbsp; & nbsp; công khai $ var_name; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; // chức năng thành viên công cộng

& nbsp; & nbsp; hàm công khai_name ()

  {

& nbsp; & nbsp; & nbsp; & nbsp; // xác định chức năng ở đây

  }

 } 

Chương trình sau đây minh họa Trình sửa đổi truy cập công khai trong PHP:

& nbsp; // Xác định lớp cơ sở

Đồ trang sức lớp {

& nbsp; & nbsp; & nbsp; public $ price = "Chúng tôi có giá cố định là 100000";

& nbsp; & nbsp; & nbsp; & nbsp; function printMessage () {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

    }

}

& nbsp; // & nbsp; Xác định các lớp dẫn xuất

Vòng cổ lớp mở rộng đồ trang sức {

& nbsp; & nbsp; & nbsp; & nbsp; function print () {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

    }

}

& nbsp; // & nbsp; Xác định các lớp dẫn xuất

Vòng cổ lớp mở rộng đồ trang sức {

& nbsp; & nbsp; & nbsp; & nbsp; function print () {

// Tạo đối tượng của

// Lớp có nguồn gốc.

$ obj = vòng cổ mới;

 $obj->printMessage();

 $obj->print();

& nbsp; // gọi các chức năng

InheritanceInPHP_1

  • Private:

echo $ obj-> giá;

tiếng vang php_eol;

lớp DOIVED_CLASS_NAME mở rộng base_class_name

{

?>

Công cụ sửa đổi quyền truy cập riêng cung cấp quyền riêng tư tối đa cho các thuộc tính của lớp cơ sở. Bạn có thể truy cập một thành viên dữ liệu được khai báo riêng hoặc chức năng thành viên chỉ trong lớp mà chúng được khai báo.

Ví dụ sau đây cho thấy một lớp với các thành viên riêng: & nbsp;

& nbsp; & nbsp; // thành viên dữ liệu riêng tư

  {

& nbsp; & nbsp; & nbsp; & nbsp; // xác định chức năng ở đây

  }

}

& nbsp; // & nbsp; Xác định các lớp dẫn xuất

Vòng cổ lớp mở rộng đồ trang sức {

& nbsp; // Xác định lớp cơ sở

Đồ trang sức lớp {

& nbsp; & nbsp; & nbsp; public $ price = "Chúng tôi có giá cố định là 100000";

& nbsp; & nbsp; & nbsp; & nbsp; function printMessage () {

    {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

    }

}

& nbsp; // & nbsp; Xác định các lớp dẫn xuất

Vòng cổ lớp mở rộng đồ trang sức {

& nbsp; & nbsp; & nbsp; & nbsp; function print () {

    {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

    }

}

& nbsp; // & nbsp; Xác định các lớp dẫn xuất

Vòng cổ lớp mở rộng đồ trang sức {

& nbsp; & nbsp; & nbsp; & nbsp; function print () {

// Tạo đối tượng của

// Lớp có nguồn gốc.

$ obj = vòng cổ mới;

$obj->show();

& nbsp; // gọi các chức năng

$obj->printPrice();

& nbsp; // gọi các chức năng

InheritanceInPHP_2. 

echo $ obj-> giá;

  • Protected:

tiếng vang php_eol;

?>

lớp DOIVED_CLASS_NAME mở rộng base_class_name

{

Công cụ sửa đổi quyền truy cập riêng cung cấp quyền riêng tư tối đa cho các thuộc tính của lớp cơ sở. Bạn có thể truy cập một thành viên dữ liệu được khai báo riêng hoặc chức năng thành viên chỉ trong lớp mà chúng được khai báo.

Ví dụ sau đây cho thấy một lớp với các thành viên riêng: & nbsp;

& nbsp; & nbsp; // thành viên dữ liệu riêng tư

& nbsp; & nbsp; riêng tư $ var_name; & nbsp; & nbsp; & nbsp; & nbsp;

  {

& nbsp; & nbsp; & nbsp; & nbsp; // xác định chức năng ở đây

  }

}

& nbsp; // & nbsp; Xác định các lớp dẫn xuất

& nbsp; // Xác định lớp cơ sở

Đồ trang sức lớp {

& nbsp; & nbsp; & nbsp; public $ price = "Chúng tôi có giá cố định là 100000";

& nbsp; & nbsp; & nbsp; & nbsp; function printMessage () {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

    {

}

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

}

}

& nbsp; // & nbsp; Xác định các lớp dẫn xuất

Vòng cổ lớp mở rộng đồ trang sức {

& nbsp; & nbsp; & nbsp; & nbsp; function print () {

    {

// Tạo đối tượng của

// Lớp có nguồn gốc.

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

    }

}

$ obj = vòng cổ mới;

$ obj-> Total ();

$obj->printInvoice();

?>

InheritanceInPHP_3 

Lớp trẻ với các phương pháp và thuộc tính riêng của nó

Trong kế thừa, mục đích kế thừa các thuộc tính và thành viên của một lớp cơ sở bởi một lớp trẻ được đạt được rất tốt. Khi một lớp con được thừa hưởng từ một lớp cơ sở, nó có quyền truy cập trực tiếp vào tất cả các thành viên không riêng của lớp cơ sở. Và ngay cả các thành viên tư nhân có thể được truy cập gián tiếp. & Nbsp;

Tuy nhiên, một lớp trẻ cũng có thể có các phương pháp và thuộc tính riêng. Ngoài các thành viên của lớp cơ sở, một lớp dẫn xuất có thể có nhiều thành viên dữ liệu và phương thức tùy thích. Một lớp dẫn xuất cũng giống như bất kỳ lớp nào khác, với lợi ích của việc có quyền truy cập vào một số phương pháp và thuộc tính khác của một lớp cơ sở. Đây là những gì thừa kế là tất cả về. & Nbsp; & nbsp;

Chương trình sau đây minh họa một lớp trẻ có quyền truy cập vào các thuộc tính của lớp cơ sở cùng với các phương thức và thuộc tính của nó:

// Xác định lớp cơ sở

class base_ class {

& nbsp; & nbsp; & nbsp; & nbsp; // Thành viên dữ liệu của lớp cơ sở

& nbsp; & nbsp; & nbsp; & nbsp; công khai $ data_mem = 10;

& nbsp; & nbsp; & nbsp; & nbsp; // chức năng thành viên của lớp cơ sở

& nbsp; & nbsp; & nbsp; & nbsp; chức năng công khai thành viên_func ()

    {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

    }

}

// & nbsp; Xác định các lớp dẫn xuất

lớp child_class mở rộng base_class {& nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; // chức năng thành viên của lớp con

& nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; {& nbsp; echo "Tôi là chức năng lớp con.";

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

    }

}

// & nbsp; Xác định các lớp dẫn xuất

lớp child_class mở rộng base_class {& nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; // chức năng thành viên của lớp con

& nbsp;

$obj->member_func();

& nbsp; & nbsp; & nbsp; & nbsp; {& nbsp; echo "Tôi là chức năng lớp con.";

// Tạo đối tượng của

?>

InheritanceInPHP_4 

Lớp trẻ với các phương pháp và thuộc tính riêng của nó

Trong kế thừa, mục đích kế thừa các thuộc tính và thành viên của một lớp cơ sở bởi một lớp trẻ được đạt được rất tốt. Khi một lớp con được thừa hưởng từ một lớp cơ sở, nó có quyền truy cập trực tiếp vào tất cả các thành viên không riêng của lớp cơ sở. Và ngay cả các thành viên tư nhân có thể được truy cập gián tiếp. & Nbsp;

  • Tuy nhiên, một lớp trẻ cũng có thể có các phương pháp và thuộc tính riêng. Ngoài các thành viên của lớp cơ sở, một lớp dẫn xuất có thể có nhiều thành viên dữ liệu và phương thức tùy thích. Một lớp dẫn xuất cũng giống như bất kỳ lớp nào khác, với lợi ích của việc có quyền truy cập vào một số phương pháp và thuộc tính khác của một lớp cơ sở. Đây là những gì thừa kế là tất cả về. & Nbsp; & nbsp;

Chương trình sau đây minh họa một lớp trẻ có quyền truy cập vào các thuộc tính của lớp cơ sở cùng với các phương thức và thuộc tính của nó:

InheritanceInPHP_Flowchart_1

The following program illustrates single level inheritance in PHP:

// Xác định lớp cơ sở

class base_ class {

& nbsp; & nbsp; & nbsp; & nbsp; // Thành viên dữ liệu của lớp cơ sở

& nbsp; & nbsp; & nbsp; & nbsp; công khai $ data_mem = 10;

& nbsp; & nbsp; & nbsp; & nbsp; // chức năng thành viên của lớp cơ sở

    } 

}

& nbsp; & nbsp; & nbsp; & nbsp; chức năng công khai thành viên_func ()

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; công khai $ data_mem = 10;

& nbsp; & nbsp; & nbsp; & nbsp; // chức năng thành viên của lớp cơ sở

& nbsp; & nbsp; & nbsp; & nbsp; chức năng công khai thành viên_func ()

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

}

// & nbsp; Xác định các lớp dẫn xuất

lớp child_class mở rộng base_class {& nbsp; & nbsp; & nbsp; & nbsp;

 $f->printName('Ring'); 

$s->printName('Necklace'); 

 ?>

InheritanceInPHP_5.

  • & nbsp; & nbsp; & nbsp; & nbsp; // chức năng thành viên của lớp con

& nbsp;

InheritanceInPHP_Flowchart_2

& nbsp; & nbsp; & nbsp; & nbsp; {& nbsp; echo "Tôi là chức năng lớp con.";

// Xác định lớp cơ sở

class base_ class {

& nbsp; & nbsp; & nbsp; & nbsp; // Thành viên dữ liệu của lớp cơ sở

& nbsp; & nbsp; & nbsp; & nbsp; công khai $ data_mem = 10;

    }  

}

& nbsp; & nbsp; & nbsp; & nbsp; chức năng công khai thành viên_func ()

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

    }

}

// & nbsp; Xác định các lớp dẫn xuất

lớp child_class mở rộng base_class {& nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; // chức năng thành viên của lớp con

& nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Chi phí mặt dây chuyền: 600000';

    }

& nbsp; & nbsp; & nbsp; & nbsp; chức năng công khai pricelist () {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; '. $ this-> TotalCost (). PHP_EOL;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; '. $ this-> vòng cổ (). PHP_EOL;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; '. $ this-> pendantcost (). PHP_EOL;

    }

// Tạo đối tượng của & nbsp;

// Lớp học có nguồn gốc

$ obj = mặt dây chuyền mới ();

$obj->priceList();

?>

InheritanceInPHP_6

  • Di truyền phân cấp

Như tên cho thấy, kế thừa phân cấp cho thấy một cấu trúc giống như cây. Nhiều lớp dẫn xuất được kế thừa trực tiếp từ một lớp cơ sở. Trong loại kế thừa này, nhiều hơn một lớp có nguồn gốc chia sẻ cùng một lớp cha.

InheritanceInPHP_Flowchart_3

Chương trình sau đây minh họa kế thừa phân cấp trong PHP:

// Lớp cơ sở có tên là "Trang sức"

Đồ trang sức lớp {

& nbsp; & nbsp; & nbsp; & nbsp; trang sức chức năng công cộng () {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; PHP_EOL; & nbsp;

    } 

}

// lớp học có tên là "Vòng cổ"

Vòng cổ lớp mở rộng trang sức {& nbsp; & nbsp;

}

// lớp học có tên là "Vòng cổ"

Vòng cổ lớp mở rộng trang sức {& nbsp; & nbsp;

}

// lớp học có tên là "Vòng cổ"

Vòng cổ lớp mở rộng trang sức {& nbsp; & nbsp;

Vòng đeo tay lớp mở rộng trang sức {& nbsp; & nbsp;

// Tạo đối tượng của & nbsp;

// Các lớp học có nguồn gốc

?>

InheritanceInPHP_7. 

Di truyền phân cấp

Như tên cho thấy, kế thừa phân cấp cho thấy một cấu trúc giống như cây. Nhiều lớp dẫn xuất được kế thừa trực tiếp từ một lớp cơ sở. Trong loại kế thừa này, nhiều hơn một lớp có nguồn gốc chia sẻ cùng một lớp cha.

Chương trình sau đây minh họa kế thừa phân cấp trong PHP:

// Lớp cơ sở có tên là "Trang sức"

Đồ trang sức lớp {

& nbsp; & nbsp; & nbsp; & nbsp; trang sức chức năng công cộng () {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; PHP_EOL; & nbsp;

}

// lớp học có tên là "Vòng cổ"

Vòng cổ lớp mở rộng trang sức {& nbsp; & nbsp;

Vòng đeo tay lớp mở rộng trang sức {& nbsp; & nbsp;

}

// lớp học có tên là "Vòng cổ"

Vòng cổ lớp mở rộng trang sức {& nbsp; & nbsp;

Vòng đeo tay lớp mở rộng trang sức {& nbsp; & nbsp;

// Tạo đối tượng của & nbsp;

    } 

}

// lớp học có tên là "Vòng cổ"

Vòng cổ lớp mở rộng trang sức {& nbsp; & nbsp;

Vòng đeo tay lớp mở rộng trang sức {& nbsp; & nbsp;

$obj->show(); 

// Tạo đối tượng của & nbsp;

// Các lớp học có nguồn gốc

?>

InheritanceInPHP_8

Di truyền phân cấp

Như tên cho thấy, kế thừa phân cấp cho thấy một cấu trúc giống như cây. Nhiều lớp dẫn xuất được kế thừa trực tiếp từ một lớp cơ sở. Trong loại kế thừa này, nhiều hơn một lớp có nguồn gốc chia sẻ cùng một lớp cha.

Chương trình sau đây minh họa kế thừa phân cấp trong PHP:

// Lớp cơ sở có tên là "Trang sức"

Đồ trang sức lớp {

& nbsp; & nbsp; & nbsp; & nbsp; trang sức chức năng công cộng () {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; PHP_EOL; & nbsp;

}

// lớp học có tên là "Vòng cổ"

Vòng cổ lớp mở rộng trang sức {& nbsp; & nbsp;

    } 

}

// lớp học có tên là "Vòng cổ"

Vòng cổ lớp mở rộng trang sức {& nbsp; & nbsp;

Vòng đeo tay lớp mở rộng trang sức {& nbsp; & nbsp;

// Tạo đối tượng của & nbsp;

// Các lớp học có nguồn gốc

// "Vòng cổ" và "Vòng đeo tay"

        $this->display();

    }

// lớp học có tên là "Vòng cổ"

Vòng cổ lớp mở rộng trang sức {& nbsp; & nbsp;

Vòng đeo tay lớp mở rộng trang sức {& nbsp; & nbsp;

$obj->show(); 

?>

/InheritanceInPHP_9 

Di truyền phân cấp

Như tên cho thấy, kế thừa phân cấp cho thấy một cấu trúc giống như cây. Nhiều lớp dẫn xuất được kế thừa trực tiếp từ một lớp cơ sở. Trong loại kế thừa này, nhiều hơn một lớp có nguồn gốc chia sẻ cùng một lớp cha.

Chương trình sau đây minh họa khái niệm về phương thức ghi đè trong PHP:

// Lớp cơ sở có tên là "Base_Class"

class base_ class {

& nbsp; & nbsp; & nbsp; & nbsp; // "Hiển thị" chức năng của lớp cơ sở & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; chức năng công khai show () {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; . PHP_EOL; & nbsp;

    } 

}

& nbsp; // lớp có tên là "derive_class"

lớp DOIVED_CLASS mở rộng base_class {

& nbsp; & nbsp; & nbsp; // "Hiển thị" hàm của lớp dẫn xuất & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; chức năng công khai show () {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; . PHP_EOL; & nbsp;

    }

}

& nbsp; // lớp có tên là "derive_class"

lớp DOIVED_CLASS mở rộng base_class {

& nbsp; & nbsp; & nbsp; // "Hiển thị" hàm của lớp dẫn xuất & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; '. PHP_EOL;

$obj->show();  

& nbsp; // tạo một đối tượng của lớp dẫn xuất

InheritanceInPHP_10.

$ obj = new derive_class ();

// sẽ gọi "Hiển thị" & nbsp;

// Chức năng của lớp dẫn xuất

?>

  • Trong chương trình ở trên, cả lớp cơ sở (tức là base_class) và lớp dẫn xuất (tức là derive_class) đều có chức năng gọi là show show. Nếu một thể hiện của lớp dẫn xuất gọi hàm show (), thì PHP sẽ gọi hàm show () của cuộc gọi dẫn xuất. Điều này là do DREUSIVED_CLASS ghi đè cho show () của base_class với phương thức show () của riêng nó. Nếu một thể hiện của lớp cơ sở sử dụng phương thức show (), thì sẽ không có sự ghi đè của phương thức.

Từ khóa cuối cùng trong PHP

Cuối cùng là một từ khóa quan trọng trong các khái niệm OOPS trong PHP và được tìm thấy trong các ngôn ngữ lập trình khác nhau như Java, JavaScript, v.v. Tuy nhiên, từ khóa cuối cùng phục vụ các mục đích khác nhau trong các ngôn ngữ khác nhau. & NBSP;

Trong PHP, từ khóa cuối cùng phục vụ các mục đích khác nhau tùy thuộc vào việc nó được sử dụng với một lớp hay phương thức.

Từ khóa cuối cùng được sử dụng với một lớp: từ khóa cuối cùng với một lớp, phục vụ mục đích ngăn chặn sự kế thừa. Nếu một lớp được khai báo cuối cùng, sử dụng từ khóa cuối cùng, thì việc kế thừa lớp đó sẽ khiến chương trình đưa ra lỗi. Điều này có thể hữu ích trong trường hợp khi bạn không muốn một lớp học và các thành viên của nó được truy cập ở bất kỳ nơi nào khác trong chương trình. & NBSP;

Chương trình sau đây minh họa khái niệm về từ khóa cuối cùng của người Viking với các lớp trong PHP:

      }

Lưu ý: Mã này sẽ gây ra lỗi vì chúng tôi đang cố gắng kế thừa một lớp cuối cùng.

& nbsp; & nbsp; & nbsp; lớp trang sức cuối cùng {

      }

   }

& nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; function print () {

      }

   }

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

   $obj->show();

& nbsp; // tạo một đối tượng của lớp dẫn xuất

InheritanceInPHP_11 

  • $ obj = new derive_class ();

// sẽ gọi "Hiển thị" & nbsp;

// Chức năng của lớp dẫn xuất

?>

Trong chương trình ở trên, cả lớp cơ sở (tức là base_class) và lớp dẫn xuất (tức là derive_class) đều có chức năng gọi là show show. Nếu một thể hiện của lớp dẫn xuất gọi hàm show (), thì PHP sẽ gọi hàm show () của cuộc gọi dẫn xuất. Điều này là do DREUSIVED_CLASS ghi đè cho show () của base_class với phương thức show () của riêng nó. Nếu một thể hiện của lớp cơ sở sử dụng phương thức show (), thì sẽ không có sự ghi đè của phương thức.

Từ khóa cuối cùng trong PHP

      }

   }

Cuối cùng là một từ khóa quan trọng trong các khái niệm OOPS trong PHP và được tìm thấy trong các ngôn ngữ lập trình khác nhau như Java, JavaScript, v.v. Tuy nhiên, từ khóa cuối cùng phục vụ các mục đích khác nhau trong các ngôn ngữ khác nhau. & NBSP;

Trong chương trình ở trên, cả lớp cơ sở (tức là base_class) và lớp dẫn xuất (tức là derive_class) đều có chức năng gọi là show show. Nếu một thể hiện của lớp dẫn xuất gọi hàm show (), thì PHP sẽ gọi hàm show () của cuộc gọi dẫn xuất. Điều này là do DREUSIVED_CLASS ghi đè cho show () của base_class với phương thức show () của riêng nó. Nếu một thể hiện của lớp cơ sở sử dụng phương thức show (), thì sẽ không có sự ghi đè của phương thức.

Từ khóa cuối cùng trong PHP

      }

   }  

Cuối cùng là một từ khóa quan trọng trong các khái niệm OOPS trong PHP và được tìm thấy trong các ngôn ngữ lập trình khác nhau như Java, JavaScript, v.v. Tuy nhiên, từ khóa cuối cùng phục vụ các mục đích khác nhau trong các ngôn ngữ khác nhau. & NBSP;

Trong PHP, từ khóa cuối cùng phục vụ các mục đích khác nhau tùy thuộc vào việc nó được sử dụng với một lớp hay phương thức.

& nbsp; // tạo một đối tượng của lớp dẫn xuất

InheritanceInPHP_12

$ obj = new derive_class ();

?>

Trong chương trình ở trên, cả lớp cơ sở (tức là base_class) và lớp dẫn xuất (tức là derive_class) đều có chức năng gọi là show show. Nếu một thể hiện của lớp dẫn xuất gọi hàm show (), thì PHP sẽ gọi hàm show () của cuộc gọi dẫn xuất. Điều này là do DREUSIVED_CLASS ghi đè cho show () của base_class với phương thức show () của riêng nó. Nếu một thể hiện của lớp cơ sở sử dụng phương thức show (), thì sẽ không có sự ghi đè của phương thức.

Từ khóa cuối cùng trong PHP

      }

   }

& nbsp; & nbsp; & nbsp; lớp TestClass mở rộng đồ trang sức {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; function printMessage () {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

      }

   }

& nbsp; & nbsp; & nbsp; $ ob = new testClass;

   $ob->printMessage();

?>

InheritanceInPHP_13

Nhiều kế thừa trong PHP bằng cách sử dụng các đặc điểm hoặc giao diện

Nhiều kế thừa là một loại kế thừa trong đó một lớp có thể kế thừa các thuộc tính từ nhiều lớp cha mẹ. Trong loại kế thừa này, có một lớp có nguồn gốc, có nguồn gốc từ nhiều lớp cơ sở. Đây là một trong những khái niệm quan trọng và hữu ích nhất được cung cấp trong mô hình hướng đối tượng và phục vụ mục đích trong đó bạn muốn một lớp kế thừa các loại thuộc tính khác nhau (nằm trong các lớp khác nhau). & NBSP;

Ví dụ, hãy xem xét một lớp gọi là vẹt. Bây giờ, vì một con vẹt là một con chim, và nó cũng có thể là một con vật cưng hoặc đơn giản là một sinh vật sống, vì vậy, con vẹt lớp có thể phục vụ các thuộc tính khác nhau. Vì vậy, & nbsp; Sử dụng nhiều kế thừa, lớp vẹt có thể kế thừa các thuộc tính của cả ba lớp Bird, PET và Living_creature.

InheritanceInPHP_Flowchart_4.

Nhiều ngôn ngữ lập trình không hỗ trợ nhiều kế thừa trực tiếp như Java và PHP. Tuy nhiên, PHP cung cấp một số cách để thực hiện nhiều kế thừa trong các chương trình của bạn. Trong ngôn ngữ lập trình PHP, nhiều kế thừa đạt được bằng cách sử dụng hai cách:

  • Traits:

Các đặc điểm được sử dụng để giảm độ phức tạp của một chương trình bằng cách viết các chức năng nhất quán có thể được sử dụng bởi các lớp khác trong chương trình. Một đặc điểm giống như một lớp, nó có thể có các chức năng cũng như các phương thức trừu tượng. Các chức năng được xác định trong một đặc điểm có thể được truy cập bởi các lớp khác trong chương trình PHP. & NBSP;

Các đặc điểm có thể được sử dụng để thực hiện khái niệm nhiều kế thừa trong PHP. & NBSP;

Cú pháp

lớp DOIVED_CLASS_NAME mở rộng base_class_name {

& nbsp; & nbsp; & nbsp; & nbsp; sử dụng Trait_name; & nbsp; // "Sử dụng từ khóa" để sử dụng một đặc điểm

    ...

    ...

& nbsp; & nbsp; & nbsp; & nbsp; // base_class chức năng

}

Chương trình sau đây minh họa việc sử dụng các đặc điểm để thực hiện nhiều kế thừa: & nbsp;

// khai báo một lớp

lớp chim {

& nbsp; & nbsp; & nbsp; & nbsp; Hiển thị chức năng công khai () {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

    }

}

Chương trình sau đây minh họa việc sử dụng các đặc điểm để thực hiện nhiều kế thừa: & nbsp;

trait Pet {

// khai báo một lớp

lớp chim {

    }

}

Chương trình sau đây minh họa việc sử dụng các đặc điểm để thực hiện nhiều kế thừa: & nbsp;

class Parrot extends Bird {

// khai báo một lớp

lớp chim {

& nbsp; & nbsp; & nbsp; & nbsp; Hiển thị chức năng công khai () {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

    }

// khai báo một đặc điểm

Đặc điểm thú cưng {

$test->display();

$test->show();

$test->msg();

?>

InheritanceInPHP_14

  • Interfaces:

Nhiều kế thừa trong PHP bằng cách sử dụng các đặc điểm hoặc giao diện

Nhiều kế thừa là một loại kế thừa trong đó một lớp có thể kế thừa các thuộc tính từ nhiều lớp cha mẹ. Trong loại kế thừa này, có một lớp có nguồn gốc, có nguồn gốc từ nhiều lớp cơ sở. Đây là một trong những khái niệm quan trọng và hữu ích nhất được cung cấp trong mô hình hướng đối tượng và phục vụ mục đích trong đó bạn muốn một lớp kế thừa các loại thuộc tính khác nhau (nằm trong các lớp khác nhau). & NBSP;

Cú pháp

lớp DOIVED_CLASS_NAME mở rộng base_class_name {

& nbsp; & nbsp; & nbsp; & nbsp; sử dụng Trait_name; & nbsp; // "Sử dụng từ khóa" để sử dụng một đặc điểm

& nbsp; & nbsp; & nbsp; & nbsp; // base_class chức năng

}

// khai báo một lớp

lớp chim {

& nbsp; & nbsp; & nbsp; & nbsp; Hiển thị chức năng công khai () {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

     }

}

Chương trình sau đây minh họa việc sử dụng các đặc điểm để thực hiện nhiều kế thừa: & nbsp;

interface Pet {

// khai báo một lớp

}

Chương trình sau đây minh họa việc sử dụng các đặc điểm để thực hiện nhiều kế thừa: & nbsp;

// inherited from Bird class

// khai báo một lớp

lớp chim {

& nbsp; & nbsp; & nbsp; & nbsp; Hiển thị chức năng công khai () {

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

     }

// khai báo một đặc điểm

Đặc điểm thú cưng {

     }

}

Chương trình sau đây minh họa việc sử dụng các đặc điểm để thực hiện nhiều kế thừa: & nbsp;

$obj = new Parrot();

// khai báo một lớp

$obj->insidePet();

$obj->insideParrot();

?>

InheritanceInPHP_15

lớp chim {

& nbsp; & nbsp; & nbsp; & nbsp; Hiển thị chức năng công khai () {

  • Khả năng tái sử dụng mã: Kế thừa hỗ trợ mạnh mẽ cho khả năng tái sử dụng mã. Vì các chức năng và thuộc tính của một lớp có thể được kế thừa và sử dụng bởi các lớp khác, nên không cần phải viết các chức năng đó nhiều lần trong các phần khác nhau của chương trình.
  • Hát dữ liệu: Việc ẩn dữ liệu là một trong những khía cạnh quan trọng nhất của kế thừa. Khả năng truy cập của dữ liệu có thể được kiểm soát dễ dàng bằng cách sử dụng các công cụ sửa đổi truy cập và chỉ các dữ liệu cần thiết được phép truy cập bên ngoài lớp.
  • Khả năng mở rộng: Kế thừa cung cấp một cách để viết các chương trình mở rộng. Điều này có nghĩa là các chức năng hoặc lớp học bắt buộc có thể được mở rộng khi có yêu cầu trong sự tăng trưởng trong tương lai của chương trình hoặc ứng dụng. & NBSP;
  • Ghi đè: Khái niệm về phương pháp ghi đè có thể dễ dàng đạt được trong PHP. Các phương pháp của một lớp cơ sở có thể được xác định lại trong lớp dẫn xuất theo yêu cầu của chương trình. Các chức năng đó được ghi đè trong lớp dẫn xuất, mà không gây ra bất kỳ lỗi nào.
  • Giảm độ phức tạp: Độ phức tạp của mã cũng được giảm vì các thuộc tính chung có thể được kế thừa đơn giản, mà không cần phải điều chỉnh lại chúng. Điều này làm cho mã thuận tiện.
Bạn có phải là nhà phát triển web hoặc quan tâm đến việc xây dựng một trang web? Ghi danh cho & nbsp; Nhà phát triển web Stack Full - có nghĩa là chương trình của Stack Master. Khám phá xem trước khóa học!

Gói lên!

Trong bài viết này, bạn đã học về kế thừa trong PHP. Bạn đã khám phá PHP và các khái niệm hướng đối tượng của nó theo chiều sâu. Bạn đã lao sâu vào việc sử dụng, loại, chế độ và tất cả các khái niệm quan trọng khác về thừa kế. Bài viết này đã thảo luận chi tiết một số khái niệm liên quan khác như từ khóa cuối cùng, ghi đè phương thức, sửa đổi truy cập, v.v.

Để bắt đầu với PHP khi mới bắt đầu, bạn có thể tham khảo video này. Tham gia khóa đào tạo PHP trực tuyến của chúng tôi để học PHP và xây dựng các ứng dụng năng động được hướng dẫn bởi các chuyên gia trong ngành. Nếu bạn là một chuyên gia PHP, bạn có thể đăng ký đào tạo phát triển PHP nâng cao của chúng tôi để lên Upskill. Điều này sẽ cho phép bạn học các khái niệm PHP nâng cao như phiên, cookie, v.v.

Don Chỉ cần dừng lại ở đây. Để tìm hiểu sự phát triển của Stack và để cho mình cơ hội làm việc cho các đại gia công nghệ hàng đầu, hãy xem khóa học của chúng tôi trên nhà phát triển web Stack Full Stack - có nghĩa là Stack. Trong khóa học này, bạn sẽ học được một số kỹ năng nóng nhất như Node, Mongo, v.v. sẽ giúp bạn đặt chân vào phát triển web chuyên nghiệp. Để có được một danh sách đầy đủ các khóa học miễn phí được cung cấp bởi SimpleLearn, hãy truy cập các khóa học miễn phí.

Nếu bạn có bất kỳ câu hỏi nào cho chúng tôi, xin vui lòng đề cập đến chúng trong phần bình luận và chúng tôi sẽ yêu cầu các chuyên gia của chúng tôi trả lời chúng cho bạn.

Học hỏi!

Kế thừa trong PHP và loại là gì?

Kế thừa có ba loại, thừa kế đơn, đa và đa cấp. PHP chỉ hỗ trợ thừa kế đơn, trong đó chỉ có một lớp có thể được lấy từ lớp cha đơn. Chúng ta có thể mô phỏng nhiều kế thừa bằng cách sử dụng các giao diện.single, multiple and multilevel Inheritance. PHP supports only single inheritance, where only one class can be derived from single parent class. We can simulate multiple inheritance by using interfaces.

Kế thừa và loại của nó là gì?

Có nhiều loại di truyền khác nhau viz., Di truyền đơn, thừa kế, thừa kế đa cấp, thừa kế lai và kế thừa phân cấp. Di truyền đơn: Khi một lớp dẫn xuất chỉ di truyền từ một lớp cơ sở, nó được gọi là kế thừa đơn lẻ.Single inheritance, Multiple inheritance, Multilevel inheritance, hybrid inheritance, and hierarchical inheritance. Single Inheritance: When a derived class inherits only from one base class, it is known as single inheritance.

Tại sao chúng ta cần thừa kế trong PHP?

Kế thừa cho phép chúng tôi chỉ viết mã một lần vào cha mẹ, sau đó sử dụng mã trong cả hai lớp cha và con.Lớp con có thể sử dụng tất cả các phương pháp và thuộc tính không riêng tư mà nó kế thừa từ lớp cha.allows us to write the code only once in the parent, and then use the code in both the parent and the child classes. The child class can make use of all the non-private methods and properties that it inherits from the parent class.

Di sản giải thích là gì?

Di truyền là quá trình mà thông tin di truyền được truyền từ cha mẹ sang con.Đây là lý do tại sao các thành viên của cùng một gia đình có xu hướng có những đặc điểm tương tự.the process by which genetic information is passed on from parent to child. This is why members of the same family tend to have similar characteristics.