Sự cố này đã được bật/tắt làm phiền tôi và tôi đã viết 4 trình bao bọc ngay bây giờ. Tôi chắc chắn tôi đang làm sai và cần phải tìm ra nơi hiểu biết của tôi là phân nhánh.C# thừa kế cơ sở
Giả sử tôi đang sử dụng lớp Rectangle để biểu diễn các thanh kim loại. (hoạt động tốt hơn sau đó động vật)
Vì vậy, hãy nói rằng lớp cơ sở được gọi là "Bar".
private class Bar
{
internal Rectangle Area;
}
So. Bây giờ chúng ta tạo một hình chữ nhật, nói 300 đơn vị của 10 đơn vị.
private Bar CreateBar()
{
Bar1 = new Bar1();
Bar1.Area = new Rectangle(new Point(0,0), new Size(300,10));
return Bar1;
}
Tuyệt vời, vì vậy chúng tôi có thanh cơ sở.
Bây giờ, giả sử chúng ta muốn làm cho thanh này có chất liệu - nói bằng thép. Vì thế. . .
private class SteelBar : Bar
{
string Material;
}
Vì vậy, nếu tôi đã làm điều này. . .
private SteelBar CreateSteelBar()
{
SteelBar SteelB = new SteelB();
Bar B = CreateBar();
SteelB = B;
SteelB.Material = "Steel";
return SteelB;
}
Từ những gì tôi nhận được từ điều này nếu tôi gọi CreateSteelBar, nó tạo thanh thép gọi là CreateBar. Vì vậy, tôi kết thúc với một thanh thép với hình chữ nhật 300 x 10, và một chuỗi rỗng hoặc trống cho vật liệu. Sau đó tôi đặt vật liệu thành thép.
Khi tôi thử một cái gì đó tương tự trong chương trình của tôi, nó giữ cho tôi không thể ngầm tạo ra một lớp cao hơn từ một lớp thấp xuống. Tôi đã có thể đoán đây là lý do tại sao thừa kế tồn tại xem xét tất cả các thừa kế từ các ví dụ động vật tôi thấy, nhưng tôi hy vọng một người nào đó có thể làm rõ tôi.
Ngoài ra, tôi chắc chắn tôi có thể gọi số SteelBar = CreateBar();
nhưng tôi đã làm điều đó một chặng đường dài ở đây.
Nó không rõ ràng với tôi tại sao bạn không sử dụng các nhà thầu. Điều đó sẽ đơn giản hóa vấn đề của bạn một cách đáng kể. –
Bạn không trả về giá trị trong 'CreateBar()' –
Nó sẽ trong trường hợp này - trong hệ thống của tôi, tôi đang tạo phần mở rộng cho một thứ có từ 1 đến 500 mục bên trong nó. – Charles