class con được gọi là class cơ sở hay class dẫn xuất. Cú pháp khai báo class con cũng tương t ự như class thông thường.
Cú pháp
ref class Class_name1 // Khai báo class dẫn xuất {
public:
ref class Class_name2 // Khai báo class con. {
Statement; // Đoạn mã của class con. };
Statement; // Đoạn mã của class cha. } ;
VD :
ref class Hinh_tron
{public : public : // Variable : UInt16 R; // Method : UInt16 Chu_vi() { return 2*(Math::PI)*R; } UInt16 Dien_tich() { return (Math::PI)*R*R; }
ref class Hinh_vuong
{public : public : // Variable : UInt16 a; // Method : UInt16 Chu_vi()
return 4*a; } UInt16 Dien_tich() { return a*a; } }; }; Sửdụng Nested Class:
Trong chương trình chính (hàm main()), đ ể tạo ra một đối tượng từ ref class con đã khai báo, ta phải truy xuất thông qua class cha.
Cách 1 : Dùng Handle^ :
Cú pháp :
Class_name1::Class_name2^ name = gcnew Class_name1::Class_name2();
Lưu ý : Nếu trong class đã có khai báo constructor, khi tạo đối tượng ta phải theo đúng cấu trúc của constructor.
VD : Hinh_tron::Hinh_vuong^ A = gcnew Hinh_tron::Hinh_vuong(10);
Đểtruy xuất đến các biến vàphương thức của ref class, ta dùng toán tử “->”.
VD : A->a = 5; // Gán giá trị5 cho thuộc tính a của đối tượng.
UInt16 x = A->Chu_vi(); // x = 20
UInt16 y = A->Dien_tich(); // y = 25
Cách 2 : Dùng stack :
Cú pháp : Class_name1::Class_name2 name ; // name là tên đối tượng.
VD : Hinh_tron::Hinh_vuong A(5) ; // Tạo đối tượng hình tròn A.
Đểtruy xuất đến các biến và phương thức của ref class, ta dùng toán tử “.”.
VD : A.R = 5; // Gán giá trị5 cho thuộc tính R của đối tượng.
Quay trởlại ví dụvềclass Hinh_vuong là class con của Class Hinh_tron đã khai báo, trong hàm main()
VD :
void main()
{
Hinh_tron^ A = gcnew Hinh_tron(10);
Console::WriteLine("Chu vi hinh tron A: " + A->Chu_vi());
Hinh_tron::Hinh_vuong^ B = gcnew Hinh_tron::Hinh_vuong(25); Hinh_tron::Hinh_vuong C(25);
Console::WriteLine("Chu vi hinh vuong B: " + B->Chu_vi()); Console::WriteLine("Chu vi hinh vuong C: " + C.Chu_vi()); Console::ReadKey();
}
Kết quảin ra màn hình : Chu vi hinh tron A : 62 Chu vi hinh vuong B : 100 Chu vi hinh vuong C : 100