Overloading (Nạp ông chồng phương thức) cùng Overriding (ghi đè phương thức) là hai có mang cơ bản trong lập trình mà bất kể newbie nào thì cũng cần phân biệt. Vậy bọn chúng là gì? khác biệt thế nào? Hãy thuộc mình đối chiếu và mày mò nhé.Bạn đang xem: Override cùng overload trong php
Overloading (Nạp chồng phương thức) là gì?
Overloading là 1 trong kĩ thuật cho phép trong và một class tất cả thể có rất nhiều phương thức thuộc tên nhưng khác nhau về số lượng tham số hoặc kiểu tài liệu tham số. Ví dụ bọn họ có hàm tinhTong dùng để làm cộng hai số nguyên. Khi mong muốn cộng ba số nguyên dễ thường tôi lại đề xuất viết một hàm với thương hiệu khác(chẳng hạn tinhTong1) với truyền vào 3 số nguyên xuất xắc sao? như vậy thì code sẽ trở nên tinh vi hơn trong khi hai hàm bao gồm cùng một mục đích là cộng các số nguyên lại với nhau. Như vậy bọn họ sẽ overload hàm tinhTong như sau:
Bạn đang xem: Chức năng nạp chồng và ghi đè trong php là gì?

Khi call hàm tinhTong cùng truyền vào số lượng tham số khác biệt thì sẽ điện thoại tư vấn tới hàm có con số tham số tương ứng

Chú ý vào hành lang cửa số "Watch 1" ta thấy quý giá của hai biến đổi a và b lần lượt là giá trị trả về của hai hàm tinhTong(int a, int b) và hàm tinhTong(int a, int b, int c)
Tương từ bỏ chứ ta hoàn toàn có thể overload kiểu dữ liệu của tham số. Thay vày hàm tinhTongcộng nhì số nguyên thì tôi cũng hoàn toàn có thể cộng hai số thực, chỉ việc truyền vào 2 tham số hình dạng double.
Xem thêm: php fopen create file


Tạo constructor với số lượng tham số khác biệt cũng là 1 trong dạng của oveloading.
Overriding (Ghi đè phương thức) là gì?
Overrding (tên vừa đủ là Method Overriding), được thực hiện trong trường vừa lòng lớp con kế thừa từ lớp thân phụ và mong định nghĩa lại một cách thức đã có mặt ở lớp cha. Một lớp thân phụ thông thông thường có thể có không ít lớp con kế thừa, tuy vậy phương thức sinh sống lớp phụ vương có thể phù hợp với lớp bé này cơ mà không phù hợp với lớp con khác, vì vậy lớp con nên ghi đè lại cách tiến hành đó mang lại phù hợp. Lấy một ví dụ class Animal bao gồm phương thức animalSound thay mặt đại diện cho giờ kêu của động vật. Class Dog và Cat thừa kế từ class Animal, nhưng mà chó cùng mèo gồm tiếng kêu khác biệt nên yêu cầu implement phương thức animalSound cho từng lớp không giống nhau. Do vậy rất cần phải ghi đè lại cách tiến hành animalSound ở nhị lớp Dog với Cat bằng cách sử dụng trường đoản cú khóa override như sau(lưu ý lấy ví dụ như minh họa áp dụng code C#, đa số ngôn ngữ không giống nhau sẽ overriding theo cú pháp khác nhau nhưng về thực chất là như nhau).

So sánh
Overloading | Overriding |
Thể hiện nhiều hình tại compile time | Thể hiện đa hình tại runtime |
Thêm hành vi đến phương thức | Thay thay đổi hành vi hiện tại của phương thức |
Có thể khác biệt về số lượng và kiểu tài liệu của tham số | Số lượng cùng kiểu dữ liệu của tham số đề xuất giống nhau |
Xảy ra trong cùng một class | Xảy ra ở cả 2 class gồm quan hệ kế thừa |
Hi vọng qua nội dung bài viết này đồng đội sẽ làm rõ hơn và không thể nhầm lẫn giữa hai quan niệm này nữa. Thanks ~