Computer >> Máy Tính >  >> Lập trình >> PHP

Kế thừa đối tượng PHP

Giới thiệu

Kế thừa là một nguyên tắc quan trọng của phương pháp luận lập trình hướng đối tượng. Sử dụng nguyên tắc này, 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.

Cú pháp

class B extends A

trong đó A là lớp cơ sở (còn được gọi là cha) và B được gọi là lớp con hoặc lớp con. Lớp con kế thừa các phương thức public và protected của lớp cha. Lớp con có thể xác định lại hoặc ghi đè bất kỳ phương thức kế thừa nào. Nếu không, các phương thức kế thừa sẽ giữ lại chức năng của chúng như được định nghĩa trong lớp cha, khi được sử dụng với đối tượng của lớp con.

Định nghĩa lớp cha phải đứng trước định nghĩa lớp con. Trong trường hợp này, định nghĩa của lớp A sẽ xuất hiện trước định nghĩa của lớp B trong tập lệnh.

Ví dụ

<?php
class A{
   //properties, constants and methods of class A
}
class B extends A{
   //public and protected methods inherited
}
?>

Nếu tính năng tự động tải được bật, định nghĩa về lớp cha có được bằng cách tải tập lệnh lớp.

Ví dụ về Kế thừa

Đoạn mã sau cho thấy rằng lớp con kế thừa các thành viên công khai và được bảo vệ của lớp cha

Ví dụ

<?php
class parentclass{
   public function publicmethod(){
      echo "This is public method of parent class\n" ;
   }
   protected function protectedmethod(){
      echo "This is protected method of parent class\n" ;
   }
   private function privatemethod(){
      echo "This is private method of parent class\n" ;
   }
}
class childclass extends parentclass{
   public function childmethod(){
      $this->protectedmethod();
      //$this->privatemethod(); //this will produce error
   }
}
$obj=new childclass();
$obj->publicmethod();
$obj->childmethod();
?>

Đầu ra

Điều này sẽ tạo ra kết quả sau. -

This is public method of parent class
This is protected method of parent class
PHP Fatal error: Uncaught Error: Call to private method parentclass::privatemethod() from context 'childclass'

Ví dụ ghi đè phương thức

Nếu một phương thức được kế thừa từ lớp cha được định nghĩa lại trong lớp con, định nghĩa mới sẽ ghi đè chức năng trước đó. Trong ví dụ sau, publicmethod được định nghĩa lại trong lớp con

Ví dụ

<?php
class parentclass{
public function publicmethod(){
   echo "This is public method of parent class\n" ;
}
protected function protectedmethod(){
   echo "This is protected method of parent class\n" ;
}
private function privatemethod(){
   echo "This is private method of parent class\n" ;
}
}
class childclass extends parentclass{
   public function publicmethod(){
      echo "public method of parent class is overridden in child class\n" ;
   }
}
$obj=new childclass();
$obj->publicmethod();
?>

Đầu ra

Điều này sẽ tạo ra kết quả sau. -

public method of parent class is overridden in child class

Thừa kế theo dòng dõi

PHP không hỗ trợ đa kế thừa. Do đó một lớp không thể mở rộng hai hoặc nhiều lớp. Tuy nhiên, nó hỗ trợ kế thừa theo thứ bậc như sau:

Ví dụ

<?php
class A{
   function test(){
      echo "method in A class";
   }
}
class B extends A{
   //
}
class C extends B{
   //
}
$obj=new C();
$obj->test();
?>

Đầu ra

Điều này sẽ hiển thị kết quả sau

method in A class