Hướng dẫn is inheritance used in php? - kế thừa có được sử dụng trong php không?

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



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.

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.

Tại sao nhiều kế thừa không được sử dụng trong PHP?

Ngôn ngữ lập trình PHP thậm chí không hỗ trợ nhiều kế thừa/thừa kế.PHP chỉ hỗ trợ nhiều 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ể thực hiện 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.. PHP supports multiple inheritances only by using interfaces or Traits in PHP instead of classes so that we can implement it. Traits are a type of class that enables multiple case classes, objects, classes, and traits.

Chúng ta có thể kế thừa hàm tạo trong PHP không?

Để chạy một hàm tạo cha mẹ, một cuộc gọi đến cha mẹ :: __ construct [] trong hàm tạo con là bắt buộc.Nếu đứa trẻ không định nghĩa một hàm tạo thì nó có thể được kế thừa từ lớp cha giống như một phương thức lớp bình thường [nếu nó không được tuyên bố là riêng tư].If the child does not define a constructor then it may be inherited from the parent class just like a normal class method [if it was not declared as private].

Bài Viết Liên Quan

Chủ Đề