Đa thừa kế và đa thừa kế trong php

Lớp con sẽ kế thừa tất cả các thuộc tính và phương thức public và protected từ lớp cha. Ngoài ra, nó có thể có các thuộc tính và phương thức riêng

Một lớp kế thừa được định nghĩa bằng cách sử dụng từ khóa

<?php
// Class Inheritance
class Inheritance
{
public function example()
{
            echo "Hi";
}
}
// Trait formultiple
trait formultiple
{
public function examplem()
{
            echo "\t Traits";
}
}
class Sample extends Inheritance
{
use formultiple;
public function MultipleInheritance()
{
            echo "\n Multiple-Inheritance";
}
}
$check = new Sample();
$check->example();
$check->examplem();
$check->MultipleInheritance();
?>
1

Hãy xem một ví dụ

Ví dụ

class Fruit {
  public $name;
  public $color;
  public function __construct($name, . ";
    $this->name = $name;
    $this->color = $color;
  }
  public function intro() {
    echo "The fruit is {$this->name} and the color is {$this->color}.";
  }
}

// Strawberry được kế thừa từ Fruit
class Strawberry mở rộng Fruit {
  public function message() {
    echo "Am I a fruit or a berry? ";
  }
}
$strawberry = new Strawberry("Strawberry", "red");
$strawberry->message();
$strawberry->intro();
?>

Tự mình thử »

Ví dụ giải thích

Lớp Strawberry được kế thừa từ lớp Fruit

Điều này có nghĩa là lớp Strawberry có thể sử dụng các thuộc tính public $name và $color cũng như các phương thức public __construct() và intro() từ lớp Fruit do tính kế thừa

Lớp Strawberry cũng có phương thức riêng. thông điệp()



PHP - Kế thừa và Công cụ sửa đổi quyền truy cập được bảo vệ

Trong chương trước chúng ta đã biết rằng các thuộc tính hoặc phương thức của

<?php
// Class Inheritance
class Inheritance
{
public function example()
{
            echo "Hi";
}
}
// Trait formultiple
trait formultiple
{
public function examplem()
{
            echo "\t Traits";
}
}
class Sample extends Inheritance
{
use formultiple;
public function MultipleInheritance()
{
            echo "\n Multiple-Inheritance";
}
}
$check = new Sample();
$check->example();
$check->examplem();
$check->MultipleInheritance();
?>
2 có thể được truy cập trong lớp và bởi các lớp dẫn xuất từ ​​lớp đó. Điều đó nghĩa là gì?

Hãy xem một ví dụ

Ví dụ

class Fruit {
  public $name;
  public $color;
  public function __construct($name, . ";
    $this->name = $name;
    $this->color = $color;
  }
  protected function intro() {
    echo "The fruit is {$this->name} and the color is {$this->color}.";
  }
}

class Strawberry extends Fruit {
  public function message() {
    echo "Tôi là trái cây hay quả mọng?";
  }
}

// Thử gọi cả ba phương thức từ lớp bên ngoài
$strawberry = new Strawberry("Strawberry", "red"); . __construct() là công khai
$strawberry->message(); . message() được công khai
$strawberry->intro(); . intro() được bảo vệ
?>

Tự mình thử »

Trong ví dụ trên, chúng ta thấy rằng nếu chúng ta cố gọi một phương thức

<?php
// Class Inheritance
class Inheritance
{
public function example()
{
            echo "Hi";
}
}
// Trait formultiple
trait formultiple
{
public function examplem()
{
            echo "\t Traits";
}
}
class Sample extends Inheritance
{
use formultiple;
public function MultipleInheritance()
{
            echo "\n Multiple-Inheritance";
}
}
$check = new Sample();
$check->example();
$check->examplem();
$check->MultipleInheritance();
?>
2 (intro()) từ bên ngoài lớp, chúng ta sẽ gặp lỗi.
<?php
// Class Inheritance
class Inheritance
{
public function example()
{
            echo "Hi";
}
}
// Trait formultiple
trait formultiple
{
public function examplem()
{
            echo "\t Traits";
}
}
class Sample extends Inheritance
{
use formultiple;
public function MultipleInheritance()
{
            echo "\n Multiple-Inheritance";
}
}
$check = new Sample();
$check->example();
$check->examplem();
$check->MultipleInheritance();
?>
4 phương pháp sẽ hoạt động tốt

Hãy xem một ví dụ khác

Ví dụ

class Fruit {
  public $name;
  public $color;
  public function __construct($name, . ";
    $this->name = $name;
    $this->color = $color;
  }
  protected function intro() {
    echo "The fruit is {$this->name} and the color is {$this->color}.";
  }
}

class Strawberry extends Fruit {
  public function message() {
    echo "Tôi là trái cây hay quả mọng?";
    // Call protected method from within derived class - OK
    $this -> intro();
  }
}

$strawberry = new Strawberry("Dâu", "đỏ"); . __construct() là công khai
$strawberry->message(); . message() là công khai và nó gọi intro() (được bảo vệ) từ bên trong lớp dẫn xuất
?>

Tự mình thử »

Trong ví dụ trên, chúng tôi thấy rằng tất cả đều hoạt động tốt. Đó là bởi vì chúng ta gọi phương thức

<?php
// Class Inheritance
class Inheritance
{
public function example()
{
            echo "Hi";
}
}
// Trait formultiple
trait formultiple
{
public function examplem()
{
            echo "\t Traits";
}
}
class Sample extends Inheritance
{
use formultiple;
public function MultipleInheritance()
{
            echo "\n Multiple-Inheritance";
}
}
$check = new Sample();
$check->example();
$check->examplem();
$check->MultipleInheritance();
?>
2 (intro()) từ bên trong lớp dẫn xuất


PHP - Ghi đè các phương thức kế thừa

Các phương thức kế thừa có thể được ghi đè bằng cách xác định lại các phương thức (sử dụng cùng tên) trong lớp con

Nhìn vào ví dụ dưới đây. Các phương thức __construct() và intro() trong lớp con (Strawberry) sẽ ghi đè lên các phương thức __construct() và intro() trong lớp cha (Fruit)

Đa kế thừa trong PHP

2019-06-17 06. 31. 44

Đa kế thừa trong PHP

Đa kế thừa trong PHP Đa kế thừa là tài nguyên của Ngôn ngữ lập trình hướng đối tượng trong đó lớp con hoặc lớp con có thể kế thừa tài nguyên của nhiều lớp cha hoặc lớp cha.

Đa thừa kế và đa thừa kế trong php
PHP không hỗ trợ Đa kế thừa nhưng sử dụng các giao diện trong PHP, chúng ta có thể triển khai nó. Sử dụng lớp với Đặc điểm. Đặc điểm là một loại lớp cho phép đa kế thừa. Các lớp, đối tượng và đặc điểm không mở rộng nhiều hơn một lớp nhưng có thể mở rộng nhiều đặc điểm cùng một lúc. cú pháp.

class child_class_name extends parent_class_name
{
    use trait_name;
   ------
   ------
    child_class functions
}
Ví dụ.
<?php
// Class Inheritance
class Inheritance
{
public function example()
{
            echo "Hi";
}
}
// Trait formultiple
trait formultiple
{
public function examplem()
{
            echo "\t Traits";
}
}
class Sample extends Inheritance
{
use formultiple;
public function MultipleInheritance()
{
            echo "\n Multiple-Inheritance";
}
}
$check = new Sample();
$check->example();
$check->examplem();
$check->MultipleInheritance();
?>
Đầu ra.
Hi Traits Multiple-Inheritance
  • Trong ví dụ trên, “traits” được sử dụng với lớp cha. Có “lớp” tên là “Kế thừa” chứa hàm example() và “đặc điểm” tên là “formultiple” chứa hàm “examplem()” và một lớp con tên là “Sample” và chúng ta đang tạo đối tượng của lớp này có tên “

Sử dụng nhiều đặc điểm

Nhiều Đặc điểm có thể được thêm vào một lớp bằng cách liệt kê chúng trong câu lệnh sử dụng, được phân tách bằng dấu phẩy. cú pháp.
class child_class_name 
{
use trait_name;  
----    
----    
child_class functions
}
Ví dụ.
<?php
// trait Multiple
trait Multiple
{
public function example()
{
            echo "Hii";
}
}  
trait formultiple
 {
public function exam()
{
            echo " Multiple";
}
}
class Test
{
use Multiple;
use formultiple;
public function MultipleInheritance()
{
            echo "\n MultipleInheritance";
}
}
$check = new Test();
$check->example();
$check->exam();
$check->MultipleInheritance();
?>
Đầu ra.
Hii Multiple MultipleInheritance
  • Trong ví dụ trên, các đặc điểm của người Viking đã được sử dụng. Có hai đặc điểm có tên là “Nhiều” chứa hàm ví dụ() và “nhiều” bao gồm hàm exam(), và có một lớp con “Kiểm tra” và chúng tôi đang tạo đối tượng của lớp đó có tên là “kiểm tra” và chúng tôi đang

Sử dụng Lớp cùng với Giao diện

cú pháp.
class childclass extends parentclass implements interface1, …
Ví dụ.
<?php
class A
{
public function insideA()
{
            echo "A";
            }
}
interface B
 {
public function insideB();
}
class Multiple extends A implements B
 function insideB()
{
                        echo "\n Interface";
            }
public function insidemultiple()
{
            echo "\n Inherited";
            }
}
$check = new multiple();
$check->insideA();
$check->insideB();
$check->insidemultiple();
?>
Đầu ra. ________số 8
  • Trong ví dụ trên, Giao diện “B” được sử dụng với lớp “A” để thực hiện nhiều kế thừa. Điểm quan trọng là nó không thể xác định chức năng bên trong giao diện; . Chúng tôi đang gọi tất cả các chức năng bằng cách sử dụng (Nhiều) đối tượng con có tên là “kiểm tra”

Nhiều giao diện

Ví dụ.
<?php
interface C
{
public function interfaceC();
}
interface B
 {
public function interfaceB();
}
class Multiple implements B, C
{
// Interface B
            function interfaceB()
 {
                        echo "\n InterfaceB";
            }

// Interface C
            function interfaceC()
 {
                        echo "\n InterfaceC";
            }

            public function insidemultiple()
            {
                        echo "\n Inherited class";
            }
}
$test = new multiple();
$test->interfaceC();
$test->interfaceB();
$test->insidemultiple();
?>
Đầu ra.
<?php
// Class Inheritance
class Inheritance
{
public function example()
{
            echo "Hi";
}
}
// Trait formultiple
trait formultiple
{
public function examplem()
{
            echo "\t Traits";
}
}
class Sample extends Inheritance
{
use formultiple;
public function MultipleInheritance()
{
            echo "\n Multiple-Inheritance";
}
}
$check = new Sample();
$check->example();
$check->examplem();
$check->MultipleInheritance();
?>
0Trong ví dụ trên, nhiều giao diện đã được sử dụng để thực hiện nhiều kế thừa. Có hai giao diện được gọi là “B” và “C” là các lớp cơ sở với lớp con được gọi là “Multiple” và chúng tôi đang gọi các hàm bằng cách sử dụng đối tượng của nó là "kiểm tra"

Sự khác biệt giữa đa kế thừa và kế thừa đa cấp là gì?

Trong Đa thừa kế, mỗi đứa trẻ có thể được bắt nguồn từ hai cha mẹ trở lên. Thừa kế đa cấp có thể có nhiều cấp kế thừa . Lớp cơ sở là cha của tất cả các lớp. Đa kế thừa có hai cấp lớp, i. e. , lớp cơ sở (lớp cha) và lớp dẫn xuất (lớp con).

Kế thừa đa cấp trong PHP là gì?

Kế thừa đa cấp. Kế thừa đa cấp là kiểu thừa kế thứ ba được hỗ trợ trong PHP . Nó xảy ra ở các mức độ khác nhau. Ở đây, một lớp cơ sở được lớp dẫn xuất kế thừa, 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.

Tại sao PHP không hỗ trợ kế thừa đa cấp?

Ngôn ngữ lập trình PHP thậm chí không hỗ trợ đa thừa kế/kế thừa. PHP chỉ hỗ trợ đa kế thừa bằng cách sử dụng các giao diện hoặc Đặc điểm trong PHP thay vì các lớp để chúng tôi có thể triển khai nó . Đặc điểm là một loại lớp cho phép nhiều lớp trường hợp, đối tượng, lớp và đặc điểm.

Kế thừa đa cấp là gì?

Kế thừa đa cấp trong C++ là quá trình dẫn xuất một lớp từ một lớp dẫn xuất khác . Khi một lớp kế thừa một lớp khác, nó sẽ được kế thừa bởi một lớp khác. Nó được gọi là kế thừa đa cấp.