Trong Java, từ khóa @Override không bắt buộc về mặt cú pháp, nhưng rất quan trọng về mặt an toàn và kiểm tra lỗi (best practice).
1/ Lớp Con (lớp dẫn xuất) Nếu KHÔNG ghi @Override
public class NV1_Con extends GiamDoc_CHA {
Tên phương thức giống hệt (Luong)
Tham số giống nhau (ở đây không có tham số)
Kiểu trả về tương thích (ở đây là void)
Phạm vi truy cập không bị thu hẹp (ở đây là public → vẫn hợp lệ)
👉 Kết quả: chương trình vẫn chạy bình thường, phương thức Luong() trong lớp con ghi đè hoàn toàn phương thức Luong() của lớp cha.
2/ Lớp Con (lớp dẫn xuất) nếu CÓ ghi @Override
@Override
Có thực sự tồn tại phương thức Luong() trong lớp cha không?
Kiểu dữ liệu trả về, tên phương thức, tham số có khớp 100% với lớp cha không?
Nếu có sai sót, trình biên dịch sẽ báo lỗi ngay.
Nếu như trong trường hợp trên, da dùng phương thức Luon( ) như thế này mà không ghi đè @Override thì sẽ rất nguy hiểm trong các hệ thống lớn vì máy sẽ chạy sai như mình mong muốn. Trong khi mình tưởng là đã ghi đè và chạy đúng
» Các tin khác: