[英]Cannot access public properties in derived class
我有一個abstract class
,它被另一個類繼承,如下所示:
public abstract class Employee
{
public string name{ get; set; }
public string age { get; set; }
}
public class OtherEmployee : Employee
{
public OtherEmployee()
{
}
public string specialField{ get; set; }
}
這就是我正在做的事情,並且不知怎么做:
Employee otherEmployee= new OtherEmployee();
otherEmployee.specialField = "somevalue";
沒有為我提供對specialField
的訪問,而Employee
所有屬性都可以訪問。 我知道這是一個小問題,但是我在這里遇到了障礙。
Employee
不知道specialField
,只有OtherEmployee
知道。 您需要將其specialField
轉換為正確的類以使用specialField
。
Employee otherEmployee = new OtherEmployee();
這不會給您OtherEmployee
而是Employee
。 為了能夠使用specialField
請執行以下操作:
(otherEmployee as OtherEmployee).specialField = yourValue;
您將無法訪問specialField
因為該對象是使用基類引用創建的。 它無權訪問Child類屬性。
盡管用子類實例化了該對象,但是引用仍然指向基類。 因此,屬性/骨架將屬於基類,並且不會為子類結構分配內存。
您必須以這種方式編寫代碼,因為您將其他雇員變量聲明為Employee Type,所以它對特殊字段一無所知。 所以:
(otherEmployee as OtherEmployee).specialField = "somevalue";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.