Skip to main content

Phương pháp ghi đè là gì?

Ghi đè phương thức được sử dụng trong lập trình hướng đối tượng trong hệ thống phân cấp kế thừa và nó xảy ra khi một phương thức được xác định trong một siêu lớp được xác định lại trong một lớp con.Thông thường, phương pháp phân lớp thực hiện một cái gì đó khác với phương pháp siêu lớp hoặc mở rộng về khả năng của siêu lớp, nhưng điều này không phải là trường hợp.Phương pháp ghi đè xảy ra bất cứ khi nào một phương thức siêu lớp được xác định lại trong một lớp con, bất kể nội dung của phương thức được xác định lại.Chữ ký phương thức được xác định lại phải hoàn toàn giống nhau. Ví dụ, loại A có thể chứa một phương thức gọi là dosomothing và phương thức này không có tham số đầu vào.Ngoài ra, các lớp B và C có thể là các lớp con của lớp A. Lớp B có thể chứa một phương thức gọi là dosomothing, không có tham số đầu vào và lớp C có thể chứa một phương thức dosome cái gì đó lấy số làm tham số đầu vào.Trong ví dụ này, chỉ có lớp B mới thể hiện phương thức ghi đè, bởi vì phương pháp dosomothing của nó có cùng một chữ ký phương pháp với siêu lớp của nó, lớp A. phương pháp dosomoth.

Kế thừa ảo trong C ++ là một ví dụ khác về quan trọng của phương thức.Các phương thức ảo trong các siêu lớp có thể hoặc không thể được thực hiện, nhưng bất kỳ định nghĩa phân lớp nào về chúng là một thể hiện của phương thức ghi đè.Khi một phương thức được ghi đè trong một lớp con, phương thức của siêu lớp không được gọi trừ khi nó được gọi rõ ràng.Cách gọi cụ thể này, một phương thức ghi đè thường được cho là để che giấu việc triển khai siêu lớp. Mặc dù phương thức ghi đè rất linh hoạt, nhưng không phải tất cả các phương pháp đều có thể được ghi đè và có những lúc độ cứng này có thể thích hợp hơn.Trong cả Java và C ++, các từ khóa cụ thể có thể được áp dụng trong chữ ký phương thức để ngăn phương thức bị ghi đè trong một lớp con.Để làm điều này, Java sử dụng từ khóa cuối cùng và C ++ sử dụng từ khóa Const.Ngăn chặn sự ghi đè phương pháp có thể có lợi nếu một hàm cụ thể phải luôn luôn không thay đổi trong toàn bộ cây kế thừa. Nói chung, các phương pháp đơn giản có được các phần dữ liệu nhỏ không cần phải được ghi đè.Các trường hợp có xu hướng được hưởng lợi nhiều nhất từ việc ghi đè là khi một lớp con nhằm mục đích thêm chức năng vào phương thức siêu lớp mà không tạo ra một phương thức hoàn toàn mới để làm như vậy.Các trường hợp bất thường trong đó một phương pháp cần được làm lại hoàn toàn cho một loại đối tượng cụ thể cũng có thể được hưởng lợi từ kỹ thuật này.Bất cứ khi nào một phương thức được ghi đè, điều quan trọng là người lập trình viên phải bình luận đầy đủ cả các phương thức siêu lớp và lớp con.Lý tưởng nhất, những bình luận này nên làm rõ từng biến thể của phương pháp, cũng như cách thức và lý do tại sao chúng khác nhau.