Phương thức thuần ảo và lớp cơ sở trừu tượng
Có những phương thức ở cơ sở không có ý nghĩa về mặt nội dung (như phương thức Ve trong lớp Hinh) nhưng lại cần phải khai báo để các lớp con kế thừa, để hỗ trợ việc này tốt hơn, C++ đã cung cấp phương thức thuần ảo cho chúng ta, Let’s go!
Phương thức thuần ảo
Phương thức thuần ảo là 1 phương thức ảo (virtual) nhưng không có nội dung (không có thân hàm) và được khai báo bằng cách gán giá trị 0 như sau:
Lưu ý: chỉ có hàm ảo (có từ khóa virtual) mới được phép gán giá trị 0.
Nhìn ví dụ chúng ta cũng hiểu khi nào nên dùng phương thức thuần ảo rồi đúng không? chúng ta có hàm Ve để vẽ được hình chữ nhật, hình vuông, tam giác,… nhưng ở lớp hình chúng ta không có gì để vẽ ra cả -> phương thức vẽ nên là phương thưc thuần ảo.
Khi sử dụng phương thức thuần ảo cần phải biết:
- Nếu 1 lớp có 1 hoặc nhiều phương thức thuần ảo thì lớp đó được gọi là lớp cơ sở trừu tượng (abstract base class).
- Không thể khởi tạo 1 đối tượng thuộc lớp cơ sở trừu tượng.
- Nếu lớp con kế thừa từ lớp cha (với lớp cha là 1 lớp cơ sở trừu tượng) thì lớp con bắt buộc phải định nghĩa thân hàm cho hàm thuần ảo -> Nếu không làm (hoặc thiếu xót) lớp con đó sẽ được xem như là 1 lớp cơ sở trừu tượng.
Xem rõ hơn bằng đoạn code bên dưới:
Chương trình báo lỗi:
error: cannot declare variable ‘tamgiac’ to be of abstract type ‘TamGiac’
Nên hãy thận trọng khi sử dụng nhé!
Tổng kết
Phù ~ Bạn có để ý không? chúng ta đã học luôn đặc tính thứ 4 - trừu tượng (Abstraction) và cũng là bài học lý thuyết cuối cùng trong chuỗi series OOP rồi đó ;) Chúc mừng bạn đã kiên trì và hoàn thành được series này! Bài sau sẽ là 1 bài tập lớn - project cho series này, tự tin làm nhé ;). Đừng quên theo dõi fanpage Tui Tự Code để cập nhật thêm những khóa học hay khác nhé. Chúc các bạn thành công trên con đường lập trình viên. Pie~