Tôi đã là một coder .Net (không thể nói tôi là một lập trình viên) trong 2 năm. Có một câu hỏi mà tôi không thể hiểu trong nhiều năm, đó là làm thế nào một thể hiện của lớp cơ sở giữ một thể hiện của lớp dẫn xuất?Làm thế nào một thể hiện của lớp cơ sở giữ một thể hiện của lớp dẫn xuất?
Giả sử chúng ta có hai lớp:
class BaseClass
{
public A propertyA;
public B propertyB;
}
class DerivedClass :BaseClass
{
public C propertyC;
}
Làm thế nào điều này có thể xảy ra:
BaseClass obj = new DerivedClass()
Ý tôi là, mô hình bộ nhớ của BaseClass
, không có không gian cho propertyC mới được bổ sung, vậy làm thế nào có thể nó vẫn giữ giá trị của propertyC?
Ở phía bên kia, làm thế nào có thể này không thể xảy ra:
DerivedClass obj = new BaseClass()
Tôi nghĩ đây là cách chính xác kể từ khi mô hình bộ nhớ của DerivedClass
có tất cả các không gian cho BaseClass và thậm chí nhiều hơn nữa. Nhưng điều này không đúng, tại sao?
Tôi biết tôi đang đặt một câu hỏi thực sự ngu ngốc, nhưng ai đó có thể cho tôi câu trả lời chi tiết hơn về điều này? Nó sẽ tốt hơn từ quan điểm của bộ nhớ hoặc trình biên dịch.
Điều này hoàn toàn giống với câu hỏi này ở đây, với câu trả lời rất hay cho câu hỏi của bạn. http://stackoverflow.com/questions/4937180/a-base-class-pointer-can-point-to-a-derived-class-object-why-is-the-vice-versa – darnir
Cảm ơn tất cả vì sự xuất sắc của bạn Tôi đã có điểm :) Cảm ơn tất cả các bạn !!! ~ – NextStep