Quá tải và ghi đè PHP

Phương pháp lập trình hướng đối tượng, thường được viết tắt là OOPS, là nền tảng của tất cả các ngôn ngữ lập trình hiện đại. Các ngôn ngữ này tuân thủ và triển khai các khái niệm về lập trình hướng đối tượng với rất ít loại trừ. Hai trong số các khái niệm đó rất quan trọng - nạp chồng phương thức và ghi đè phương thức

Quá tải phương thức là gì?

Nạp chồng phương thức là khái niệm định nghĩa hai hoặc nhiều phương thức có cùng tên nhưng chữ ký khác nhau. Một trong hai phương thức này được gọi dựa trên số lượng tham số được truyền

Ghi đè phương thức là gì?

Bắt đầu khóa học phát triển phần mềm miễn phí của bạn

Phát triển web, ngôn ngữ lập trình, kiểm thử phần mềm và những thứ khác

Ghi đè phương thức là khái niệm xác định hai hoặc nhiều phương thức giống hệt nhau, có cùng tên và chữ ký. Một trong hai phương pháp này được gọi dựa trên đối tượng gọi

Gói phát triển phần mềm tất cả trong một(hơn 600 khóa học, hơn 50 dự án)

Quá tải và ghi đè PHP
Quá tải và ghi đè PHP
Quá tải và ghi đè PHP
Quá tải và ghi đè PHP

Quá tải và ghi đè PHP
Quá tải và ghi đè PHP
Quá tải và ghi đè PHP
Quá tải và ghi đè PHP

Giá bán
Xem các khóa học

Hơn 600 khóa học trực tuyến. hơn 50 dự án. Hơn 3000 giờ. Giấy chứng nhận có thể kiểm chứng. Truy cập trọn đời
4. 6 (86.560 xếp hạng)

So sánh trực tiếp giữa nạp chồng phương thức và ghi đè phương thức (Infographics)

Dưới đây là 10 điểm khác biệt hàng đầu giữa Nạp chồng Phương thức và Ghi đè Phương thức

Quá tải và ghi đè PHP

Sự khác biệt chính giữa Nạp chồng phương thức và Ghi đè phương thức

Sau đây là những điểm khác biệt chính giữa Nạp chồng phương thức và Ghi đè phương thức

  • Sự khác biệt cơ bản nhất ở đây là quá tải đạt được trong cùng một lớp, trong khi ghi đè yêu cầu lớp cha và lớp con ở mức tối thiểu
  • Một khái niệm quan trọng khác cần ghi nhớ là các phương thức quá tải bị ràng buộc tại thời điểm biên dịch với các lệnh gọi phương thức. Điều này có nghĩa là trình biên dịch biết phương thức nào sẽ gọi trước khi mã được chạy
    Các phương thức ghi đè bị ràng buộc trong thời gian chạy. Đối tượng gọi xác định xem phương thức của lớp cha phải được gọi hay phương thức của lớp con. Điều này có thể dẫn đến nhiều ngoại lệ trong thời gian chạy hơn nếu không được xử lý đúng cách
  • Các phương thức tĩnh có thể bị quá tải nhưng không bị ghi đè. Điều này là do các đối tượng của lớp không gọi các phương thức tĩnh. Ghi đè phương thức được xác định bởi đối tượng gọi phương thức. Do đó, các phương thức tĩnh không thể bị ghi đè

Bảng so sánh nạp chồng phương thức và ghi đè phương thức

Dưới đây là bảng so sánh cho thấy sự tương đồng giữa Nạp chồng Phương thức và Ghi đè Phương thức

Cơ sở so sánh giữa Method Overloading và Method OverridingMethod OverloadingMethod OverridingDefinitionMethod Overloading là khái niệm định nghĩa hai hoặc nhiều phương thức có cùng tên nhưng khác chữ ký. Ghi đè phương thức là khái niệm xác định hai hoặc nhiều phương thức giống hệt nhau, có cùng tên và chữ ký. Thời gian biên dịch ràng buộc phương thức. Việc ràng buộc các định nghĩa phương thức quá tải với các lệnh gọi phương thức tương ứng được thực hiện tại thời điểm biên dịch. Thời gian chạy. Việc ràng buộc các định nghĩa phương thức bị ghi đè với các lệnh gọi phương thức của chúng được thực hiện trong thời gian chạy. Loại liên kết phương thức Liên kết tĩnh Liên kết động Hạn chế lớp Nạp chồng phương thức có thể đạt được trong cùng một lớp hoặc trong các lớp khác nhau. Không hạn chế. Ghi đè phương thức đạt được trong các lớp khác nhau. Các lớp này có quan hệ cha-con. Hạn chế chữ ký Các phương thức quá tải phải khác nhau về chữ ký của chúng. Số lượng tham số hoặc loại tham số hoặc thứ tự tham số phải khác nhau. Các phương thức bị ghi đè có thể có cùng chữ ký, không hạn chế. Hạn chế phương thức tĩnh Phương thức tĩnh có thể bị quá tải. Điều này cho phép một lớp có nhiều hơn một phương thức tĩnh có cùng tên nhưng chữ ký khác nhau. Phương pháp tĩnh không thể được ghi đè. Nếu một lớp con có một phương thức tĩnh có cùng tên và chữ ký với lớp cha, thì nó được coi là một phương thức riêng biệt và không ghi đè lên phương thức của lớp cha. Kiểu trả về của phương thứcKiểu trả về của các phương thức quá tải không quan trọng. Các phương thức bị quá tải có thể có hoặc không có cùng kiểu trả về. Tuy nhiên, các phương thức có cùng tên và chữ ký nhưng chỉ khác nhau về kiểu trả về không thể bị quá tải. Các phương thức bị ghi đè có thể có các kiểu trả về cụ thể hơn. Một phương thức của lớp cha có thể trả về một đối tượng của lớp cha và một phương thức của lớp con, ghi đè phương thức của lớp cha, có thể trả về một đối tượng của lớp con. Sử dụng quá tải được thực hiện để triển khai các logic phương thức khác nhau trong khi vẫn giữ nguyên tên phương thức. Nó chủ yếu được thực hiện để viết một triển khai cụ thể của một phương thức được kế thừa từ lớp cha. Lợi íchTăng khả năng đọc chương trình
Tăng khả năng sử dụng lại mã. Giúp viết logic mã để xử lý các tình huống cụ thể bằng cách chuyển mã thông thường. Liên quan Khái niệm OOPS Kết hợp chặt chẽ với tính đa hình. Cùng một phương thức có thể thực hiện các hành động khác nhau dựa trên sự khác biệt về tham số. Đan chặt chẽ với một thừa kế. Một lớp con có thể đi chệch khỏi logic cha để xử lý một kịch bản cụ thể trong khi vẫn kế thừa các kịch bản khác

Ví dụ về Nạp chồng Phương thức và Ghi đè Phương thức trong Java

Sau đây là các ví dụ về Nạp chồng phương thức và Ghi đè phương thức trong Java

Ví dụ 1

Mã số

class Hello
{
public void SayHello()
{
System.out.println("Hello World!");
}
//overloading method
public void SayHello(String name)
{
System.out.println("Hello "+name+"!");
}
}
class Main
{
public static void main(String args[])
{
Hello obj = new Hello();
obj.SayHello();
obj.SayHello("Charlie");
}
}

đầu ra

Quá tải và ghi đè PHP

Ví dụ #2

Mã số

class Hello{
public String name = "Abc";
public void SayHello(){
System.out.println("Hello World!");
}
}
class HelloMale extends Hello{
public void SayHello(){
System.out.println("Hello Mr. "+name+"!");
}
}
class HelloFemale extends Hello{
public void SayHello(){
System.out.println("Hello Ms. "+name+"!");
}
}
class Main {
public static void main(String args[]){
new Hello().SayHello();
new HelloMale().SayHello();
new HelloFemale().SayHello();
}
}

đầu ra

Quá tải và ghi đè PHP

Ví dụ về trường hợp sử dụng nghiệp vụ

Giả sử bạn cần triển khai ứng dụng thanh toán cho một doanh nghiệp chấp nhận tất cả các loại thẻ, ngân hàng trực tuyến, ví thanh toán, v.v. Bây giờ, bạn có hai cách để thực hiện điều này

  • Xác định các tên khác nhau cho từng loại thanh toán, chẳng hạn như Payment_Card(), Payment_Netbanking(), Payment_Wallets(), v.v.
  • Nạp chồng tên phương thức với các chữ ký khác nhau – Thanh toán(card_number, cvv), Thanh toán(netbanking_id, auth_token), Thanh toán(wallet_number), v.v.

Không phải là cách thứ hai sạch hơn?

Hãy tiến thêm một bước để hiểu ghi đè. Hiện nay có rất nhiều nhà cung cấp dịch vụ thẻ như VISA, MasterCard, AmericanExpress, Rupay, v.v. Giả sử tất cả đều sử dụng một cổng thanh toán chung ngoại trừ Rupay có cổng thanh toán riêng. Bây giờ bạn sẽ viết một lớp cha chứa định nghĩa phương thức để chấp nhận thanh toán qua cổng thanh toán chung. Lớp con của Rupay sẽ kế thừa tất cả các tính năng của lớp cha và chỉ ghi đè lên một tính năng - phương thức cổng thanh toán. Rốt cuộc, lớp con chỉ khác nhau ở phương thức cổng thanh toán. Tất cả các tính năng khác, chẳng hạn như số thẻ, mã thông báo bảo mật, v.v. , giống nhau

Phần kết luận

Như vậy, chúng ta đã biết được sự khác biệt cơ bản giữa hai khái niệm cơ bản nhất trong lập trình hướng đối tượng là Overloading và Overriding. Chúng tôi đã viết một ví dụ cơ bản và hiểu một kịch bản kinh doanh thực tế trong đó có thể triển khai quá tải và ghi đè. Cả hai khái niệm đều dễ hiểu về mặt lý thuyết nhưng cần thực hành để áp dụng trong các tình huống thực tế. Do đó, rất nên tạo thói quen sử dụng quá tải và ghi đè càng nhiều càng tốt trong các chương trình của bạn. Điều này sẽ giúp bạn rất nhiều trong việc nắm bắt nó

Bài viết được đề xuất

Đây là hướng dẫn về Sự khác biệt giữa Nạp chồng Phương thức và Ghi đè Phương thức. Ở đây chúng tôi thảo luận về Sự khác biệt quan trọng hàng đầu giữa Quá tải và Ghi đè bằng đồ họa thông tin và ví dụ. Bạn cũng có thể xem các bài viết sau để tìm hiểu thêm –

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

Nạp chồng và ghi đè hàm là tính năng OOP trong PHP. Trong nạp chồng hàm, nhiều hàm có thể có cùng chữ ký phương thức nhưng số lượng đối số khác nhau. Nhưng trong trường hợp ghi đè hàm, nhiều hàm sẽ có cùng chữ ký phương thức và số lượng đối số

PHP có quá tải không?

Nạp chồng ¶ Nạp chồng trong PHP cung cấp phương tiện để tự động tạo các thuộc tính và phương thức. 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

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

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.

Ghi đè trong PHP là gì?

Ghi đè hàm trong PHP