Hướng dẫn what is overriding in php - cái gì ghi đè trong php

Hướng dẫn what is overriding in php - cái gì ghi đè trong php

Ghi đè & nbsp; trong PHP là gì?

Ghi đè là một khái niệm lập trình hướng đối tượng tương tự như một khái niệm như lớp, đối tượng, đóng gói, đa hình, quá tải, vv trong PHP. Việc ghi đè các hàm và lớp được thực hiện khi một phương thức trong lớp dẫn xuất được tạo giống như phương thức trong lớp cơ sở hoặc lớp cha. Cả hai phương pháp này đều có cùng tên và cùng số lượng đối số.

Làm thế nào để ghi đè hoạt động?

Hãy cùng khám phá cách thức hoạt động của Ghi đè trong PHP.

  • Ghi đè là một khái niệm trong đó lớp dẫn xuất của lớp cơ sở thực hiện hành động tương tự như của một lớp cơ sở. Điều này có thể là trên các phương thức hoặc các lớp. Nếu đó là phương thức ghi đè thì tên của phương thức các tham số, trình xác định truy cập được tìm thấy giống như của phương thức lớp cha. Trong trường hợp không có thay đổi nào được tìm thấy trong việc thực hiện phương thức trong lớp con có nguồn gốc từ lớp cơ sở, tại thời điểm đó, người ta nói rằng phương pháp của lớp con đã ghi đè lên phương thức của lớp cơ sở.
  • Giả sử có một lớp gọi là người có thuộc tính và phương thức dữ liệu riêng. Đây là người phụ huynh hoặc người cơ sở với một phương thức gọi là speak (). Bây giờ có một lớp nữa được gọi là nhân viên mở rộng lớp người. Bây giờ, lớp nhân viên này có các thuộc tính và phương thức dữ liệu riêng và cũng có một phương thức giống như của lớp cha, vd.Speak ().
  • Phương thức này, nói () có mặt trong lớp cơ sở và cả trong lớp dẫn xuất.
  • Bây giờ những gì xảy ra là khi lớp được khởi tạo hoặc khi đối tượng được tạo, phương thức nói () nào sẽ được thực thi, có nghĩa là nói về lớp cơ sở hoặc nói về lớp dẫn xuất được thực thi phụ thuộc vào đối tượng của lớp được gọi là.
  • Nói cách khác, nếu một đối tượng của lớp người được tạo thì phương thức speak () của lớp người được gọi và do đó được thực thi. Nhưng nếu đối tượng của lớp nhân viên được tạo thì phương thức speak () của lớp dẫn xuất sẽ được thực thi, trong đó ghi đè lớp speak () của lớp cha.
  • Và đây là cách thức ghi đè diễn ra với một ví dụ
  • Trong ví dụ dưới đây, có hai lớp, lớp cơ sở và lớp có nguồn gốc. Lớp dẫn xuất mở rộng lớp cơ sở. Các lớp này được bắt đầu và hai đối tượng $ obj1 và $ obj2 được tạo. $ obj1 là một đối tượng của Baseclass và $ obj2 là một đối tượng của một lớp dẫn xuất. Các đối tượng này gọi thêm các phương thức được khai báo trong các lớp tương ứng của chúng.
  • Ở đây bạn sẽ quan sát rằng lớp cơ sở và lớp dẫn xuất có cùng một phương thức gọi là ABC (). Khi bạn thực hiện chương trình này, bạn sẽ nhận thấy rằng phương thức ABC () đã ghi đè lên phương thức lớp cơ sở ABC ().

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

Ví dụ về sự ghi đè phương thức được viết dưới đây.

Code:

class BaseClass {
public function ABC() {
echo "
In the base class"; } } class DerivedClass extends BaseClass { // override the method ABC() of base class public function ABC() { echo "
In the derived class"; } } $obj1 = new BaseClass; $obj1->ABC(); $obj2 = new DerivedClass; $obj2->ABC();

Output:

Hướng dẫn what is overriding in php - cái gì ghi đè trong php

Ghi đè với các sửa đổi truy cập

Có ba sửa đổi truy cập.

  1. Công khai: Có thể truy cập từ bất cứ nơi nào trong chương trình. Accessible from anywhere in the program.
  2. Riêng: Chỉ có thể truy cập từ lớp cha. Accessible from the parent class only.
  3. Được bảo vệ: Có thể truy cập từ lớp cơ sở và lớp dẫn xuất. Accessible from the base class and the derived class.

Như chúng ta biết phương thức được bảo vệ có thể truy cập từ một lớp cơ sở và lớp dẫn xuất, nó có thể được công khai trong lớp con nhưng không riêng tư vì riêng tư chỉ có thể truy cập trong lớp cha. Ngoài ra, nếu một phương thức lớp có trình xác định truy cập là công khai thì phương thức ghi đè trong lớp dẫn xuất không thể được khai báo là riêng tư và được bảo vệ

Ví dụ về phương thức ghi đè bằng cách sử dụng các sửa đổi truy cập

Một ví dụ về việc ghi đè bằng cách sử dụng các sửa đổi truy cập được viết dưới đây.

Code:

class BaseClass {
private function ABC() {
echo "
In the base class Method : ABC"; } protected function XYZ() { echo "
In the base class Method : XYZ"; } } class DerivedClass extends BaseClass { // overriding with public for wider accessibility public function ABC() { echo "
In the derived class Method : ABC"; } // overriding method // with more accessibility public function XYZ() { echo "
In the derived class Method : XYZ"; } } //$obj1 = new BaseClass; //$obj1->ABC();   //throws fatal error //$obj1->XYZ();          //throws fatal error $obj2 = new DerivedClass; $obj2->ABC(); $obj2->XYZ();

Output:

Hướng dẫn what is overriding in php - cái gì ghi đè trong php

Ghi đè với từ khóa cuối cùng

Từ khóa cuối cùng được sử dụng cho các lớp và phương thức. Các phương thức và lớp, không phải biến có thể được ghi đè.

Phương pháp cuối cùng ghi đè

Khi một phương thức hoặc một lớp được khai báo là cuối cùng thì việc ghi đè lên phương thức đó hoặc lớp đó cũng không thể được thực hiện kế thừa với lớp là không thể.

Ví dụ về phương thức ghi đè bằng từ khóa cuối cùng

Ví dụ về việc ghi đè bằng từ khóa cuối cùng được viết dưới đây.

Code:

class BaseClass {
// Final method – display
// this cannot be overridden in base class
final function display() {
echo "
In the Base class display function"; } /// method - ABC function ABC() { echo "
In the Base cLass ABC function"; } } class DerivedClass extends BaseClass { function ABC() { echo "
In the Derived class ABC function"; } } $obj1 = new DerivedClass; $obj1->display(); $obj1->ABC();

Output:

Hướng dẫn what is overriding in php - cái gì ghi đè trong php

Lớp cuối cùng ghi đè

Một lớp được tuyên bố là cuối cùng không thể được kế thừa. Một lớp cuối cùng có phương pháp cuối cùng cùng với các phương pháp khác. Nhưng vì bản thân lớp được tuyên bố cuối cùng, không có việc sử dụng phương pháp cuối cùng trong một lớp cuối cùng.

Ví dụ về lớp ghi đè lớp bằng cách sử dụng từ khóa cuối cùng

Ví dụ về lớp ghi đè lớp bằng cách sử dụng từ khóa cuối cùng được viết dưới đây.

Code:

// class declared as final cannot be overridden
final class BaseClass {
// method - ABC
function ABC() {
echo "
In the BaseClass Method ABC function"; } // Final method - display function display() { echo "
In the BaseClass Method display function"; } } // here you cannot extend the base class // as the base class is declared as final $obj1 = new BaseClass; $obj1->display(); $obj1->ABC();

Output:

Hướng dẫn what is overriding in php - cái gì ghi đè trong php

Bài viết đề xuất

Đây là một hướng dẫn để ghi đè trong PHP. Ở đây chúng tôi thảo luận về khái niệm cơ bản và hoạt động của PHP với các phương pháp khác nhau cùng với việc thực hiện và đầu ra mã. Bạn cũng có thể xem các bài viết sau để tìm hiểu thêm -

  1. Câu hỏi phỏng vấn php cốt lõi
  2. Ưu điểm của PHP
  3. Nghề nghiệp trong PHP
  4. Lệnh PHP

Điều gì là ghi đè và quá tải trong PHP?

Trong khái niệm lập trình hướng đối tượng nếu các hàm của lớp có cùng tên nhưng khác nhau trong các tham số được gọi là quá tải và nếu các hàm của lớp giống như tham số thì nó được gọi là ghi đè.

Quá tải trong OOP PHP là gì?

Quá tải trong PHP cung cấp các phương tiện để tạo các thuộc tính và phương thức tự động.Các thực thể động này được xử lý thông qua các phương thức ma thuật mà người ta có thể thiết lập trong một lớp cho các loại hành động khác nhau.provides means to dynamically create properties and methods. These dynamic entities are processed via magic methods one can establish in a class for various action types.

Làm thế nào chúng ta có thể ngừng ghi đè trong PHP?

Tránh ghi đè phương thức php class a {final function display () {echo "Inside Class A";}} lớp B mở rộng {function display () {echo "bên trong lớp B";}}?> Vì vậy, sử dụng từ khóa cuối cùng của tên phương thức ngăn không cho nó bị quá tải.using the keyword final infront of the method name prevents it from being overriden.

Có nghĩa là gì bằng cách ghi đè trong OOP?

Trong bất kỳ ngôn ngữ lập trình hướng đối tượng nào, ghi đè là một tính năng cho phép lớp con hoặc lớp con cung cấp một triển khai cụ thể của một phương thức đã được cung cấp bởi một trong các lớp siêu hoặc lớp của nó.a feature that allows a subclass or child class to provide a specific implementation of a method that is already provided by one of its super-classes or parent classes.