Hướng dẫn polymorphism example in php w3schools - ví dụ về đa hình trong php w3schools


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ử »



Tính đa hình trong PHP với ví dụ là gì?

Ví dụ đa hình trong PHP để thực hiện trong các lớp trừu tượng Mỗi lớp trừu tượng có một hoặc nhiều phương pháp trừu tượng. Các lớp này yêu cầu các lớp con của họ điền vào các phương thức có cùng tên. Do đó, các lớp trẻ khác nhau sử dụng các phương pháp, theo cùng một cách, do đó thực hiện đa hình trong PHP.to Implement in Abstract Classes Every abstract class has one or more abstract methods. These classes require their child classes to fill the methods with the same name. Hence, different child classes use the methods, in the same way, thereby implementing polymorphism in PHP.

Ví dụ cho đa hình là gì?

Một ví dụ thực tế về đa hình là một người đồng thời có thể có các đặc điểm khác nhau.Một người đàn ông cùng một lúc là một người cha, một người chồng và một nhân viên.Vì vậy, cùng một người thể hiện hành vi khác nhau trong các tình huống khác nhau.Điều này được gọi là đa hình.a person who at the same time can have different characteristics. A man at the same time is a father, a husband, and an employee. So the same person exhibits different behavior in different situations. This is called polymorphism.

Là đa hình có thể trong PHP?

PHP có thể sử dụng phương pháp đa hình theo 2 cách phân biệt.Đa hình trong PHP sử dụng các giao diện được cung cấp sẵn trong các lớp PHP và trừu tượng để thực hiện các phương pháp đa hình.. Polymorphism in PHP uses interfaces that are pre-provided in PHP and abstract classes to implement the methods of polymorphism.

Các ví dụ về đa hình trong OOP là gì?

Trong ngôn ngữ lập trình hướng đối tượng (OOPS), có hai loại đa hình như dưới đây: đa hình liên kết tĩnh (hoặc thời gian biên dịch), ví dụ, quá tải phương pháp.Đa hình liên kết động (hoặc thời gian chạy), ví dụ, phương thức ghi đè.Static Binding (or Compile time) Polymorphism, e.g., Method Overloading. Dynamic Binding (or Runtime) Polymorphism, e.g., Method overriding.