Lớp cha PHP là gì?

Tính kế thừa cho phép chúng ta chỉ viết mã một lần trong lớp cha, sau đó sử dụng mã trong cả lớp cha và lớp con

Để khai báo rằng một lớp kế thừa mã từ một lớp khác, chúng tôi sử dụng từ khóa mở rộng. Hãy xem trường hợp tổng quát

class Parent {
  // The parent’s class code
}
 
class Child extends Parent {
  // The  child can use the parent's class code
}

Lớp con có thể sử dụng tất cả các phương thức và thuộc tính không riêng tư mà nó kế thừa từ lớp cha. Điều này cho phép chúng ta chỉ viết mã một lần trong lớp cha, sau đó sử dụng nó trong cả lớp cha và lớp con

Trong ví dụ dưới đây, lớp SportsCar kế thừa lớp Car class, so it has access to all of the Car’s methods and properties that are not private. This allows us to write the setModel[]hello[] công khai .

//The parent class
class Car {
  // Private property inside the class
  private $model;
 
  //Public setter method
  public function setModel[$model]
  {
    $this -> model = $model;
  }
 
  public function hello[]
  {
    return "beep! I am a " . $this -> model . "
";   } }     //The child class inherits the code from the parent class class SportsCar extends Car {   //No code in the child class }     //Create an instance from the child class $sportsCar1 = new SportsCar[];   // Set the value of the class’ property. // For this aim, we use a method that we created in the parent $sportsCar1 -> setModel['Mercedes Benz'];   //Use another method that the child class inherited from the parent class echo $sportsCar1 -> hello[];

Kết quả.
bíp. Tôi là một chiếc Mercedes Benz

Làm thế nào một lớp con có thể có các phương thức và thuộc tính riêng của nó?

Giống như một lớp con có thể sử dụng các thuộc tính và phương thức của lớp cha, nó cũng có thể có các thuộc tính và phương thức của riêng nó. Tuy nhiên, trong khi một lớp con có thể sử dụng mã được thừa hưởng từ lớp cha, thì lớp cha không được phép sử dụng mã của lớp con

Trong ví dụ dưới đây, chúng ta sẽ thêm vào lớp con một số mã của riêng nó bằng cách thêm thuộc tính $style cũng như . driveItWithStyle[] method:

// The parent class has its properties and methods
class Car {
  
  //A private property or method can be used only by the parent.
  private $model;
  
  // Public methods and properties can be used by both the parent and the child classes.
  public function setModel[$model]
  {
    $this -> model = $model;
  }
   
  public function getModel[]
  {
    return $this -> model;
  }
}
 
  
//The child class can use the code it inherited from the parent class, 
// and it can also have its own code 
class SportsCar extends Car{
 
  private $style = 'fast and furious';
 
  public function driveItWithStyle[]
  {
    return 'Drive a '  . $this -> getModel[] . ' ' . $this -> style . '';
  }
}
 
 
//create an instance from the child class
$sportsCar1 = new SportsCar[];
   
// Use a method that the child class inherited from the parent class
$sportsCar1 -> setModel['Ferrari'];
  
// Use a method that was added to the child class
echo $sportsCar1 -> driveItWithStyle[];

Kết quả.
Lái chiếc Ferrari nhanh và dữ dội.

Công cụ sửa đổi kiểm soát truy cập được bảo vệ

Khi chúng ta khai báo một thuộc tính hoặc một phương thức là được bảo vệ, chúng ta có thể tiếp cận nó từ cả lớp cha và lớp con

Trong hướng dẫn trước, chúng ta đã học được rằng chúng ta có thể sử dụng công cụ sửa đổi truy cập công khai để cho phép truy cập vào các phương thức và thuộc tính của lớp từ cả bên trong và bên ngoài lớp. Chúng tôi cũng đã học được rằng những phương thức và thuộc tính riêng tư chỉ có thể được sử dụng từ bên trong lớp

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về một công cụ sửa đổi thứ ba - công cụ sửa đổi được bảo vệ, cho phép sử dụng mã từ cả bên trong lớp và từ các lớp con của nó

Ví dụ đầu tiên cho thấy điều gì có thể xảy ra khi chúng ta khai báo thuộc tính $model trong phần tử gốc là riêng tư, nhưng vẫn cố gắng truy cập thuộc tính đó từ .

Bạn nghĩ điều gì có thể xảy ra khi chúng ta cố gắng gọi một phương thức hoặc thuộc tính riêng từ bên ngoài lớp?

Đây là mã

// The parent class
class Car {
  //The $model property is private, thus it can be accessed 
  // only from inside the class
  private $model;
  
  //Public setter method
  public function setModel[$model]
  {
    $this -> model = $model;
  }
}
  
   
// The child class
class SportsCar extends Car{
  //Tries to get a private property that belongs to the parent
  public function hello[]
  {
    return "beep! I am a " . $this -> model . "
";   } }   //Create an instance from the child class $sportsCar1 = new SportsCar[];   //Set the class model name $sportsCar1 -> setModel['Mercedes Benz'];   //Get the class model name echo $sportsCar1 -> hello[];

Kết quả.
Thông báo. tài sản không xác định. Xe thể thao. $mô hình

Chúng tôi gặp lỗi vì phương thức hello[] trong lớp con đang cố tiếp cận một thuộc tính riêng, $model, that belongs to the parent class.

Chúng ta có thể khắc phục sự cố bằng cách khai báo thuộc tính $model trong phần tử gốc là được bảo vệ, thay vì riêng tư, bởi vì khi chúng ta khai báo thuộc tính .

// The parent class
class Car {
  //The $model property is now protected, so it can be accessed 
  // from within the class and its child classes
  protected $model;
   
  //Public setter method
  public function setModel[$model]
  {
    $this -> model = $model;
  }
}
  
// The child class
class SportsCar extends Car {
  //Has no problem to get a protected property that belongs to the parent
  public function hello[]
  {
    return "beep! I am a " . $this -> model . "
";   } }   //Create an instance from the child class $sportsCar1 = new SportsCar[];   //Set the class model name $sportsCar1 -> setModel['Mercedes Benz'];   //Get the class model name echo $sportsCar1 -> hello[];

Kết quả.
bíp. Tôi là một chiếc Mercedes Benz

Bây giờ nó hoạt động, bởi vì chúng ta có thể truy cập mã được bảo vệ thuộc về cha mẹ từ lớp con

Làm cách nào để ghi đè các thuộc tính và phương thức của lớp cha trong lớp con?

Tương tự, lớp con có thể có các thuộc tính và phương thức riêng, nhưng nó có thể ghi đè lên các thuộc tính và phương thức của lớp cha. Khi chúng ta ghi đè các thuộc tính và phương thức của lớp, chúng ta viết lại một phương thức hoặc thuộc tính tồn tại trong cha một lần nữa trong lớp con, nhưng gán cho nó một giá trị hoặc mã khác

Trong ví dụ dưới đây, chúng ta tạo một phương thức hello[] trong lớp cha để trả về chuỗi "beep" and override it in the child class with a method by the same name that returns a different string, "Halllo".

Đây là mã

// The parent class has hello method that returns "beep".
class Car {
  public function hello[]
  {
    return "beep";
  }
}
 
//The child class has hello method that returns "Halllo"
class SportsCar extends Car {
  public function hello[]
  {
    return "Hallo";
  }
}
    
//Create a new object
$sportsCar1 = new SportsCar[];
  
//Get the result of the hello method
echo $sportsCar1 -> hello[];

Kết quả.
Xin chào

Kết quả phản ánh thực tế là phương thức hello[] từ lớp cha đã bị phương thức con có cùng tên ghi đè.

Làm cách nào để ngăn lớp con ghi đè các phương thức của lớp cha?

Để ngăn không cho phương thức trong lớp con ghi đè phương thức của lớp cha, chúng ta có thể đặt tiền tố cho phương thức trong lớp cha bằng từ khóa cuối cùng

Mục đích của một siêu lớp là gì?

Phương thức của lớp cha được sử dụng để truy cập lớp cha bên trong lớp con . Phương pháp này có nhiều cách sử dụng khi kế thừa các thành viên cha.

Một ví dụ siêu lớp là gì?

Trong phân loại học, siêu lớp liên quan đến thứ hạng phân loại phụ thuộc vào một ngành hoặc một phân ngành và cao hơn một lớp. Một ví dụ về điều này sẽ là siêu lớp Tetrapoda . Tetrapoda là một bậc phân loại bao gồm các lớp Amphibia [lưỡng cư], Reptilia [bò sát], Aves [chim] và Mammalia [động vật có vú].

Làm cách nào để tạo một siêu lớp trong PHP?

php lớp MyClass { chức năng được bảo vệ myFunc[] { echo "MyClass. myFunc[]\n"; } } class OtherClass extends MyClass { // Ghi đè định nghĩa của hàm cha public function myFunc[] { // Nhưng vẫn gọi hàm cha là parent. myFunc[]; . myFunc[]\n"; } } $class = new OtherClass[]; $class->myFunc[]; ?>

Lớp cha trong OOP là gì?

Trong lập trình hướng đối tượng, một lớp mà các lớp khác kế thừa mã được gọi là lớp cha. Hơn nữa, lớp kế thừa mã được gọi là lớp con của lớp cha đó.

Chủ Đề