2017-02-07 2 views
-2

Nicht sicher, was ich falsch mache, aber sind Eigenschaften nicht direkt von einer Basisklasse geerbt. Wenn es ist:Vererbung von Basisklasse C#

public class Fruit{ 
    string[] GroupFruit{get;set;} 

    public Fruit() 
    { 
    } 
} 

public class Citrus : Fruit{ 
    GroupFruit = new string[]{"lemon", "lime", "orange"} 

    public Citrus() 
    { 
    } 
} 

Ich bin nicht in der Lage, GroupFruit in der Citrus-Klasse zu setzen. Danke.

Jerome

+6

Das ist, weil Ihr 'GroupFruit' Eigenschaft ist privat, die die Zugriffs Standard ist für Klassenmitglieder. –

+1

Und Sie können geerbte Mitglieder nicht so zuweisen. Anstatt zu sagen: "Ich scheine nicht in der Lage zu sein", lies bitte [ask] und füge die vollständigen Fehlermeldungen ein, die du bekommst - einschließlich deiner Recherchen für sie. – CodeCaster

+0

Aber das erste Problem ist, dass Sie diesen Initialisierungscode außerhalb einer Methode geschrieben haben. Machen Sie die Eigenschaft in der Basisklasse 'protected' oder' public' und verschieben Sie den Initialisierungscode in 'Citrus' in den Konstruktor. –

Antwort

2

Sie müssen es im Konstruktor des Kindes Klasse initialisieren und es muss mindestens protected sein:

public class Fruit 
{ 
    protected string[] GroupFruit { get; set; } 

    public Fruit() 
    { 
    } 
} 

public class Citrus : Fruit 
{ 

    public Citrus() 
    { 
     base.GroupFruit = new string[] {"lemon", "lime", "orange"}; 
    } 
} 
+1

Sie können auch Werte an den Basisklassenkonstruktor übergeben und die Eigenschaft privat beibehalten (oder besser das Feld dafür verwenden). Oder Sie können den leeren Konstruktor aus der Basisklasse entfernen –

Verwandte Themen