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();
?>
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ệ
?>
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
?>
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.
- 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”