Các biến thành viên đơn giản là các biến được khai báo bên trong class. Cú pháp khai báo các biến thành viên cũng tương tự như khi khai báo các biến thông thường. Tuy nhiên, đối với các biến thành viên, không thể khởi tạo giá trị cho biến khi khai báo trong class và các biến này đi
kèm với đối tượng khi đối tượng được khởi tạo. Giá trị của các biến thành viên có thể được gán thông qua constructor hay gán trực tiếp thông qua việc truy xuất đến đối tượng.
VD :
ref class Sinh_vien
String^ Ho_ten; // các biến thành viên.
UInt32 MSSV;
String^ Nganh_hoc; … };
Trong chương trình chính, khi muốn truy xuất đến các biến thành viên của một class nào
đó, bắt buộc phải thông qua đối tượng. Có nghĩa là ta phải tạo một đối tượng của class trước rồi
sau đó mới có thểtruy xuất các biến thành viên thông qua đối tượng này. Việc truy xuất đến các biến thành viên được thực hiện thông qua toán tử “->” đối với đối tượng kiểu handle hay toán tử “.” đối với đối tượng kiểu stack.
VD :
ref class Sinh_vien
{
public:
String^ Ho_ten; // các biến thành viên.
UInt32 MSSV;
String^ Nganh_hoc; };
void main(void)
{
Sinh_vien^ A; // Tạođối tượng kiểu handle.
Sinh_vien B; // Tạo đối tượng kiểu stack.
A->Ho_ten = “Nguyen Van A”; // Truy xuất đến biến thành viên
B.Ho_ten = “Nguyen Van B”; A->MSSV = 8111123; B.MSSV = 8111124;
Console::WriteLine(“{0}/t : {1}”,A->Ho_ten, A->MSSV); Console::WriteLine(“{0} /t: {1}”,B.Ho_ten, B.MSSV); Console::ReadKey();
}
Kết quảin ra màn hình : Nguyen Van A : 8111123 Nguyen Van B : 8111124
Lưuý : Nếu không gán giá trịcho các biến thành viên tương ứng với đốitượng thì các biến này sẽ
có giá trịmặc định là giá trịmặc định của kiểu dữliệu.
phải sử dụng biến tĩnh (khi khai báo biến tĩnh thì thêm từ khóa static). Giá trịkhởi tạo này sẽ là mặc định và chỉ được gán một lần duy nhất khi tạo đối tượng. Do đó khi ta gán giá trịmới cho các biến tĩnh này thì biến sẽcập nhật giá trịnày.
VD :
ref class Sinh_vien
{
public:
String^ Ho_ten; // các biến thành viên.
UInt32 MSSV;
static String^ Nganh_hoc = “Co dien tu” ; // Biến tĩnh.
};
void main(void)
{
Sinh_vien^ A;
A->Ho_ten = “Nguyen Van A”;
Console::WriteLine(“Ho va ten : {0}” , A->Ho_ten); Console::WriteLine(“Nganh hoc : {0}”, A->Nganh_hoc); Console::ReadKey();
}
Kết quảin ra màn hình : Ho va ten : Nguyen Van A Nganh hoc : Co dien tu
Các biến tĩnh còn cho phép truy xuất trực tiếp mà không cần phải thông qua đối tượng. Việc truy xuất đến biến tĩnh có thể thông qua tên class và toán tử “::”; giá trị của biến là giá trị
mặc định đã gán cho biến trong class.
VD:
void main(void)
{
String^ a = Sinh_vien::Nganh_hoc; Console::WriteLine(“Nganh hoc : {0}”, a); Console::ReadKey();
}
Trong trường hợp muốn khai báo một biến hằng số có giá trị cho trước và không cho phép thay
đổi giá trịnày, ta có thểkhai báo biến dưới dạng biến hằng số(thêm từkhóa const khi khai báo).
VD :
ref class Sinh_vien
{
public:
String^ Ho_ten; // các biến thành viên.
UInt32 MSSV;
const static String^ Nganh_hoc = “Co dien tu” ; // Biến hằng số.
};
Các biến PI và E trong class Math là các biến hằng số.
Lưu ý : Để khai báo biến hằng số tĩnh, ta có thể dùng từ khóa const static hay literal. Hai cách
khai báo này là tương đương nhau.