Sự khác biệt giữa quá tải và ghi đè trong PHP

Có nhiều sự khác biệt giữa nạp chồng phương thức và ghi đè phương thức trong java. Dưới đây là danh sách các khác biệt giữa nạp chồng phương thức và ghi đè phương thức

Không. Nạp chồng phương thức Ghi đè phương thức1] Nạp chồng phương thức được sử dụng để tăng tính dễ đọc của chương trình. Ghi đè phương thức được sử dụng để cung cấp triển khai cụ thể của phương thức đã được cung cấp bởi siêu lớp của nó. 2] Quá tải phương thức được thực hiện trong lớp. Ghi đè phương thức xảy ra trong hai lớp có mối quan hệ IS-A [kế thừa]. 3] Trong trường hợp nạp chồng phương thức, tham số phải khác. Trong trường hợp ghi đè phương thức, tham số phải giống nhau. 4] Quá tải phương thức là ví dụ về đa hình thời gian biên dịch. Ghi đè phương thức là ví dụ về đa hình thời gian chạy. 5] Trong java, không thể thực hiện quá tải phương thức bằng cách chỉ thay đổi kiểu trả về của phương thức. Kiểu trả về có thể giống hoặc khác nhau trong nạp chồng phương thức. Nhưng bạn phải thay đổi tham số. Kiểu trả về phải giống hoặc hiệp biến trong ghi đè phương thức

Ví dụ quá tải phương thức Java

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

Quá tải và Ghi đè là các dạng đa hình trong OOP. Theo khái niệm Lập trình hướng đối tượng [OOP] nếu một lớp có các phương thức cùng tên nhưng các tham số khác nhau thì chúng ta nói rằng chúng ta đang quá tải phương thức đó. Ngoài ra, nếu chúng ta tạo một phương thức trong lớp con có cùng tên, cùng số lượng tham số và cùng một chỉ định truy cập như trong lớp cha của nó thì chúng ta có thể nói rằng chúng ta đang thực hiện ghi đè phương thức

Ngoài ra, đọc

  • Lập trình hướng đối tượng trong PHP

Như chúng ta biết rằng PHP không có kiểu nghiêm ngặt, có nghĩa là nếu chúng ta triển khai nạp chồng trong C++ hoặc Java, thì hàm sẽ giống như add[int,float] khác với add[float,int] hoặc thậm chí là add[float,int,int] . Thực ra đa hình không dễ trong PHP. Trong bài đăng này, bạn sẽ tìm hiểu cách xử lý tính đa hình trong PHP

1. Quá tải phương thức

Như đã thảo luận ở trên PHP không hỗ trợ nạp chồng phương thức so với các ngôn ngữ khác như Java hay C++. Ví dụ.
______2

nếu mã ví dụ trên chuyển đổi sang Java hoặc C++, nó sẽ hoạt động mà không có bất kỳ lỗi nào. Nhưng nếu chúng ta chạy đoạn mã trên, nó sẽ báo lỗi “Không thể khai báo lại ABC. displayMessage[]”. Quá tải đơn giản không được hỗ trợ bởi PHP. Nhưng bạn có thể triển khai quá tải bằng cách sử dụng phương thức ma thuật PHP __call[]


Ví dụ.
______3

__call[] hàm được kích hoạt khi gọi các phương thức không thể truy cập trong ngữ cảnh đối tượng. Cú pháp của __call[] là hỗn hợp __call[string $name,array $arguments].
Tham số $name là tên của phương thức được gọi. Tham số $arguments là một mảng liệt kê chứa các tham số được truyền cho phương thức $name.

2. Ghi đè phương thức

Nếu bạn tạo một phương thức trong lớp con có cùng tên, cùng số lượng tham số và cùng bộ xác định quyền truy cập như trong lớp cha thì chúng ta có thể nói rằng chúng ta đang thực hiện ghi đè phương thức trong PHP. Ví dụ

class AA {
public function output[$args] {
echo "\n Parent - the parameter value is $args";
}
}
class BB extends AA {
public function output[$args] {
echo "\n Child - the parameter value is $args";
}
}
$obj1 = new AA;
$obj2 = new BB;
$obj1->output['class AA'];
$obj2->output['class BB'];

Theo tính đa hình, nếu chúng ta gọi một phương thức bằng cách kiểm tra đối tượng trong thời gian chạy là một trường hợp đa hình. Ở đây trong ví dụ trên, chúng ta gọi phương thức đầu ra [] của lớp AA hoặc lớp BB phụ thuộc vào đối tượng đang thực hiện cuộc gọi đến phương thức

Ghi đè và nạp chồng hàm là các dạng Đa hình trong Lập trình hướng đối tượng. Quá tải phương thức xảy ra khi hai hoặc nhiều phương thức có cùng tên phương thức nhưng khác số lượng tham số trong một lớp. Ghi đè phương thức có nghĩa là hai phương thức có cùng tên phương thức và cùng số lượng tham số trong hai lớp khác nhau có nghĩa là lớp cha và lớp con

Quá tải chức năng

Như đã nêu trước đó, nạp chồng hàm có nghĩa là khai báo cùng một tên hàm nhiều lần với các tham số khác nhau. Ví dụ: để tìm diện tích của vectơ, chúng ta cần truyền bán kính làm tham số cho hình tròn trong khi chúng ta cần truyền chiều dài và chiều rộng làm tham số cho hình chữ nhật. Trong trường hợp đó, chúng ta cần truyền một tham số cho hình tròn và hai tham số cho hình chữ nhật

Hãy kiểm tra tại ví dụ dưới đây

Chúng tôi đã xác định hai chức năng area với trong một lớp Vector. Cái đầu tiên chấp nhận một đối số và cái thứ hai chấp nhận hai đối số. Khi chúng ta khởi tạo class và gọi tên hàm sẽ báo lỗi FATAL ERROR Cannot redeclare Vector::area[] on line number 8. Bởi vì chúng tôi đã khai báo lại cùng một chức năng hai lần

Điều này có thể được khắc phục bằng cách sử dụng __call. Chúng tôi chấp nhận tên hàm và đối số bên trong nó. Sau đó, chúng tôi viết các trường hợp chuyển đổi để xử lý theo số lượng đối số

Mã này sẽ xuất ra

Area of Circle: 314.15
Area of Rectangle: 100

Ghi đè chức năng

Ghi đè hàm có nghĩa là cả lớp cha và lớp con phải có cùng tên hàm và cùng số đối số. Ghi đè chức năng được sử dụng để thay thế phương thức cha trong lớp con

Hàm sẽ xuất ra

Function from Base Class with Base
Function from Derived Class : Derived

Đọc thêm bài viết

  • THẺ
  • nạp chồng hàm
  • chức năng ghi đè
  • PHP

Chia sẻ

Facebook

Twitter

liên kết

ReddIt

Bài viết trước Chụp ảnh chụp màn hình trang web bằng API PageSpeed ​​Insights

Bài viết tiếp theo Phát triển theo định hướng thử nghiệm trong PHP

Vijay Rana

https. // mã hóa. com

Xin chào, tôi là Vijay Rana, Kỹ sư phần mềm, Nhà phát triển web và Tác giả tại Kodementor. Tôi thích dành phần lớn thời gian của mình để lướt internet, chơi trò chơi và viết bài. Cảm ơn bạn đã kiểm tra ra blog của tôi. Mua cho tôi một ly cà phê

Sự khác biệt giữa quá tải và ghi đè là gì?

Ghi đè xảy ra khi chữ ký phương thức giống nhau trong lớp cha và lớp con. Quá tải xảy ra khi hai hoặc nhiều phương thức trong cùng một lớp có cùng tên nhưng khác tham số

Tại sao quá tải không được hỗ trợ trong PHP?

Bạn không thể quá tải các hàm PHP. Chữ ký hàm chỉ dựa trên tên của chúng và không bao gồm danh sách đối số, vì vậy bạn không thể có hai hàm có cùng tên . Quá tải phương thức lớp trong PHP khác với nhiều ngôn ngữ khác. PHP sử dụng cùng một từ nhưng nó mô tả một mẫu khác.

Quá tải có thể xảy ra trong PHP không?

PHP không hỗ trợ nạp chồng phương thức . Trong trường hợp bạn chưa bao giờ nghe nói về nạp chồng phương thức, điều đó có nghĩa là ngôn ngữ có thể chọn phương thức dựa trên tham số bạn đang sử dụng để gọi phương thức đó. Điều này có thể thực hiện được ở nhiều ngôn ngữ lập trình khác như Java, C++.

Quá tải trong PHP với ví dụ là gì?

Nạp chồng hàm chứa cùng tên hàm và hàm đó thực hiện tác vụ khác nhau tùy theo số lượng đối số . Ví dụ: tìm diện tích của một số hình nhất định trong đó bán kính được cho trước thì nó sẽ trả về diện tích hình tròn nếu cho chiều cao và chiều rộng thì nó sẽ cho diện tích hình chữ nhật và các hình khác.

Chủ Đề