簡體   English   中英

無法訪問派生類中的公共屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM