Professional Documents
Culture Documents
- Gồm 3 từ khóa: public, private, protected để xác định phạm vi truy xuất.
• Private: truy xuất bên trong phạm vi lớp và trong hàm bạn.
• Protected: truy xuất bên trong phạm vi của lớp, trong phạm vi lớp dẫn
xuất và trong hàm bạn.
• Public: truy xuất trong bất kỳ nơi đâu.
1 lớp có thể có nhiều nhãn private và public, mỗi nhãn có phạm vi ảnh hướng cho đến
khi gặp một nhãn kế tiếp hoặc hết khai báo lớp.
Câu 6: Constructor là gì? Dùng làm gì? Tên, kiểu dữ liệu trả về? Danh sách tham
số? Thế nào là constructor mặc định?
- Định nghĩa: Constructor (Hàm thiết lập) là một loại phương thức đặc biệt
dùng để khởi tạo thể hiện của lớp.
- Công dụng: Constructor dùng thiết lập để khởi tạo các giá trị thành phần của
đối tượng.
- Đặc điểm của constructor:
• Có tên trùng với tên lớp.
• Không có kiểu trả về.
• Có thể không có hoặc có tham số đầu vào.
• Trong một lớp có thể có một hay nhiều constructor.
- Constructor mặc định: được gọi khi thể hiện được khai báo mà không có đối
số nào được cung cấp.
- Kế thừa dùng để biểu diễn mối quan hệ đặc biệt hóa - tổng quát hóa giữa
các lớp. Các lớp được trừu tượng hóa và được tổ chức thành một sơ đồ phân
cấp lớp.
- Các lớp có các đặc điểm tương tự nhau có thể tổ chức thành một sơ đồ phân
cấp kế thừa (cây kế thừa) - Các khai báo:
class LopCha
{
// Thành phần của lớp cơ sở
};
class LopCon: (Từ khóa dẫn xuất: public/private/protected) LopCha
{
// Thành phần bổ sung của lớp dẫn xuất
};
- Ví dụ:
class CNguoi
{
protected:
char *HoTen;
public:
Nguoi();
~Nguoi();
void Nhap();
void Xuat();
};
class CSinhVien: public CNguoi
{
protected:
int MSSV; public:
CSinhVien ();
~ CSinhVien ();
void Nhap();
void Xuat();
};
Câu 9: Phạm vi truy xuất(để phân biệt phần này với chương 3, hỏi phần này sẽ có
các từ khóa “kế thừa” hay “dẫn xuất”)
- Các thuộc tính và phương tính được khai báo trong phạm vi private của
lớp cơ sở sẽ không được hiểu ở lớp dẫn xuất.
- Các thuộc tính và phương thức được khai báo trong phạm vi protected của
lớp cơ sở nếu được dẫn xuất bằng từ khóa …(1)… thì các thuộc tính và
phương thức đó sẽ được hiểu như là thành phần …(2)… của lớp dẫn xuất.
Các khoảng trống (1), (2) sẽ lần lượt là: private – private.
• protected – protected. public – protected.
- Các thuộc tính và phương thức được khai báo trong phạm vi public của
lớp cơ sở nếu được dẫn xuất bằng từ khóa …(3)… thì các thuộc tính và
phương thức đó sẽ được hiểu như là thành phần …(4)… của lớp dẫn xuất.
Các khoảng trống (3), (4) sẽ lần lượt là:
private – private.
• protected – protected.
• public – public.
Câu 10: Phương thức ảo là gì? Những lưu ý khi sử dụng phương thức ảo? -
Là cách thể hiện tính đa tình trong C++
- Các phương thức ở lớp cơ sở có tính đa hình phải được định nghĩa là một
phương thức ảo.
- Lưu ý:
• Phương thức ảo chỉ hoạt động thông qua con trỏ.
• Muốn hàm trờ thành phương thức ảo có 2 cách:
1. Thêm từ khóa virtual vào trước khai báo hàm:
Ví dụ: virtual void Nhap();
2. Phương thức tương ứng ở lớp cơ sở đã là phương
thức ảo.
• Phương thức ảo chỉ hoạt động nếu phương thức ở lớp cơ sở và lớp con có
nghi thức giao tiếp GIỐNG HỆT nhau.
• Nếu ở lớp con không định nghĩa lại phương thức ảo thì sẽ gọi phương thức
ở lớp cơ sở (gần nhất có định nghĩa)