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ứcVí 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ẻ
liên kết
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ê