Hướng dẫn why inheritance is used in php? - tại sao kế thừa được sử dụng trong php?


PHP - thừa kế là gì?

Kế thừa trong OOP = khi một lớp xuất phát từ một lớp khác.

Lớp con sẽ kế thừa tất cả các thuộc tính và phương thức được bảo vệ và công khai từ lớp cha. Ngoài ra, nó có thể có các thuộc tính và phương pháp riêng của nó.

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

Hãy xem xét một ví dụ:

Thí dụ

Tên = $ name; & nbsp; & nbsp; & nbsp; $ this-> color = $ color; & nbsp; } & nbsp; hàm công khai giới thiệu () {& nbsp; & nbsp; & nbsp; echo "quả là {$ this-> name} và màu là {$ this-> color}."; & nbsp; }}
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  public function intro() {
    echo "The fruit is {$this->name} and the color is {$this->color}.";
  }
}

// Dâu tây được thừa hưởng từ lớp dâu tây mở rộng trái cây {& nbsp; thông báo chức năng công khai () {& nbsp; & nbsp; & nbsp; Echo "Tôi là một trái cây hay một quả mọng?"; & nbsp; }} $ Strawberry = new Strawberry ("Strawberry", "Red"); $ Strawberry-> message (); $ strawberry-> intro (); ?>
class Strawberry extends Fruit {
  public function message() {
    echo "Am I a fruit or a berry? ";
  }
}
$strawberry = new Strawberry("Strawberry", "red");
$strawberry->message();
$strawberry->intro();
?>

Hãy tự mình thử »

Ví dụ giải thích

Lớp dâu tây được thừa hưởng từ lớp trái cây.

Điều này có nghĩa là lớp Strawberry có thể sử dụng các thuộc tính $ name và $ màu công khai cũng như các phương thức __construct () và intro () công khai từ lớp trái cây vì sự kế thừa.

Lớp Strawberry cũng có phương pháp riêng: message ().



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

Trong chương trước, chúng tôi đã học được rằng các thuộc tính hoặc phương thức protected có thể được truy cập trong lớp và bởi các lớp có nguồn gốc từ lớp đó. Điều đó nghĩa là gì?

Hãy xem xét một ví dụ:

Thí dụ

Tên = $ name; & nbsp; & nbsp; & nbsp; $ this-> color = $ color; & nbsp; } & nbsp; hàm công khai giới thiệu () {& nbsp; & nbsp; & nbsp; echo "quả là {$ this-> name} và màu là {$ this-> color}."; & nbsp; }}
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  protected function intro() {
    echo "The fruit is {$this->name} and the color is {$this->color}.";
  }
}

// Dâu tây được thừa hưởng từ lớp dâu tây mở rộng trái cây {& nbsp; thông báo chức năng công khai () {& nbsp; & nbsp; & nbsp; Echo "Tôi là một trái cây hay một quả mọng?"; & nbsp; }} $ Strawberry = new Strawberry ("Strawberry", "Red"); $ Strawberry-> message (); $ strawberry-> intro (); ?>
  public function message() {
    echo "Am I a fruit or a berry? ";
  }
}

Hãy tự mình thử »
$strawberry = new Strawberry("Strawberry", "red");  // OK. __construct() is public
$strawberry->message(); // OK. message() is public
$strawberry->intro(); // ERROR. intro() is protected
?>

Hãy tự mình thử »

Ví dụ giải thích

Lớp dâu tây được thừa hưởng từ lớp trái cây.

Thí dụ

Tên = $ name; & nbsp; & nbsp; & nbsp; $ this-> color = $ color; & nbsp; } & nbsp; hàm công khai giới thiệu () {& nbsp; & nbsp; & nbsp; echo "quả là {$ this-> name} và màu là {$ this-> color}."; & nbsp; }}
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  protected function intro() {
    echo "The fruit is {$this->name} and the color is {$this->color}.";
  }
}

// Dâu tây được thừa hưởng từ lớp dâu tây mở rộng trái cây {& nbsp; thông báo chức năng công khai () {& nbsp; & nbsp; & nbsp; Echo "Tôi là một trái cây hay một quả mọng?"; & nbsp; }} $ Strawberry = new Strawberry ("Strawberry", "Red"); $ Strawberry-> message (); $ strawberry-> intro (); ?>
  public function message() {
    echo "Am I a fruit or a berry? ";
    // Call protected method from within derived class - OK
    $this -> intro();
  }
}

Hãy tự mình thử »
$strawberry->message(); // OK. message() is public and it calls intro() (which is protected) from within the derived class
?>

Hãy tự mình thử »

Ví dụ giải thích


Lớp dâu tây được thừa hưởng từ lớp trái cây.

Điều này có nghĩa là lớp Strawberry có thể sử dụng các thuộc tính $ name và $ màu công khai cũng như các phương thức __construct () và intro () công khai từ lớp trái cây vì sự kế thừa.

Lớp Strawberry cũng có phương pháp riêng: message ().

Thí dụ

Tên = $ name; & nbsp; & nbsp; & nbsp; $ this-> color = $ color; & nbsp; } & nbsp; hàm công khai giới thiệu () {& nbsp; & nbsp; & nbsp; echo "quả là {$ this-> name} và màu là {$ this-> color}."; & nbsp; }}
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  public function intro() {
    echo "The fruit is {$this->name} and the color is {$this->color}.";
  }
}

// Dâu tây được thừa hưởng từ lớp dâu tây mở rộng trái cây {& nbsp; thông báo chức năng công khai () {& nbsp; & nbsp; & nbsp; Echo "Tôi là một trái cây hay một quả mọng?"; & nbsp; }} $ Strawberry = new Strawberry ("Strawberry", "Red"); $ Strawberry-> message (); $ strawberry-> intro (); ?>
  public $weight;
  public function __construct($name, $color, $weight) {
    $this->name = $name;
    $this->color = $color;
    $this->weight = $weight;
  }
  public function intro() {
    echo "The fruit is {$this->name}, the color is {$this->color}, and the weight is {$this->weight} gram.";
  }
}

Hãy tự mình thử »
$strawberry->intro();
?>

Hãy tự mình thử »


Ví dụ giải thích

Lớp dâu tây được thừa hưởng từ lớp trái cây.

Điều này có nghĩa là lớp Strawberry có thể sử dụng các thuộc tính $ name và $ màu công khai cũng như các phương thức __construct () và intro () công khai từ lớp trái cây vì sự kế thừa.

Thí dụ

Tên = $ name; & nbsp; & nbsp; & nbsp; $ this-> color = $ color; & nbsp; } & nbsp; hàm công khai giới thiệu () {& nbsp; & nbsp; & nbsp; echo "quả là {$ this-> name} và màu là {$ this-> color}."; & nbsp; }}
final class Fruit {
  // some code
}

// Dâu tây được thừa hưởng từ lớp dâu tây mở rộng trái cây {& nbsp; thông báo chức năng công khai () {& nbsp; & nbsp; & nbsp; Echo "Tôi là một trái cây hay một quả mọng?"; & nbsp; }} $ Strawberry = new Strawberry ("Strawberry", "Red"); $ Strawberry-> message (); $ strawberry-> intro (); ?>
class Strawberry extends Fruit {
  // some code
}
?>

Hãy tự mình thử »

Ví dụ giải thích

Thí dụ

Tên = $ name; & nbsp; & nbsp; & nbsp; $ this-> color = $ color; & nbsp; } & nbsp; hàm công khai giới thiệu () {& nbsp; & nbsp; & nbsp; echo "quả là {$ this-> name} và màu là {$ this-> color}."; & nbsp; }}
class Fruit {
  final public function intro() {
    // some code
  }
}

// Dâu tây được thừa hưởng từ lớp dâu tây mở rộng trái cây {& nbsp; thông báo chức năng công khai () {& nbsp; & nbsp; & nbsp; Echo "Tôi là một trái cây hay một quả mọng?"; & nbsp; }} $ Strawberry = new Strawberry ("Strawberry", "Red"); $ Strawberry-> message (); $ strawberry-> intro (); ?>
  // will result in error
  public function intro() {
    // some code
  }
}
?>

Hãy tự mình thử »



Lý do chính để sử dụng thừa kế là gì?

Mục đích chính của việc kế thừa trong lập trình định hướng đối tượng (OOP) là cung cấp cho người dùng khả năng thay đổi hành vi của các thư viện, mà không thực sự thay đổi mã đã hoạt động và gỡ lỗi.to give the user ability to change the behavior of the libraries, without actually changing already working and debugged code.

Loại thừa kế nào được sử dụng trong PHP?

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 inheritance, where only one class can be derived from single parent class. We can simulate multiple inheritance by using interfaces.

Chúng ta có thể sử dụng kế thừa trong PHP không?

Kế thừa là một nguyên tắc quan trọng của phương pháp lập trình định hướng đối tượng.Sử dụng nguyên tắc này, mối quan hệ giữa hai lớp có thể được xác định.PHP hỗ trợ kế thừa trong mô hình đối tượng của nó.PHP sử dụng mở rộng từ khóa để thiết lập mối quan hệ giữa hai lớp.PHP supports inheritance in its object model. PHP uses extends keyword to establish relationship between two classes.

Những lợi ích của việc thừa kế là gì?

Lợi ích của việc thừa kế thừa kế có thể tiết kiệm thời gian và công sức vì mã chính không cần phải được viết lại.Kế thừa cung cấp một cấu trúc mô hình rõ ràng dễ hiểu.Một kế thừa dẫn đến chi phí phát triển và bảo trì ít hơn.save time and effort as the main code need not be written again. Inheritance provides a clear model structure which is easy to understand. An inheritance leads to less development and maintenance costs.