2016-11-23 2 views
0

Ich bin nicht in der Lage, den Wert der Kindklassenkonstruktor zuweisen, mit Basisklasse Konstruktor. kannst du mir helfen, das zu verstehen?Initialisieren der Kindklasse Konstruktor: Vererbung

Code:

class Polygon 
{ 
    public int NumSides; 

    public Polygon (int numsides) 
    { 
     this.NumSides = 4; 
    } 
} 

class Square : Polygon 
{ 
    public readonly int SideLength; 
    public Square(int SideLength) : base(SideLength) 
    { 
     this.SideLength = NumSides; 
    } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     Polygon p = new Polygon(1); 
     Console.WriteLine("Polygon Class {0}", p.NumSides); 
     Square s = new Square(1); 
     Console.WriteLine("SquareClass {0}", s.SideLength); 
     Console.ReadLine(); 
    } 
} 

Ergebnis: Polygon-Klasse: 4, SquareClass: 0

Wenn ich ändern:

class Square : Polygon 
{ 
    public readonly int SideLength; 
    public Square(int SideLength) : base(SideLength) 
    { 
     this.SideLength = NumSides; 
    } 
} 

Es funktioniert.

+0

Sind Sie sicher, dass Sie dieses Ergebnis mit diesem Code erhalten? – user3185569

+3

Ist Ihr geänderter Code nicht derselbe wie der ursprüngliche Code? – stuartd

+1

Ausgabe ist in der Tat: Polygon Class 4, SquareClass 4 – stuartd

Antwort

0

Ich denke, Sie vermischen NumSides (Teil der Polygon-Basisklasse) und SideLength (nur in Square).

Ich vermute, Sie diese Klassen sein wollte: Konstruktor

class Polygon 
{ 
    public int NumSides; 

    public Polygon(int numsides) 
    { 
     this.NumSides = numsides; 
    } 
} 

class Square : Polygon 
{ 
    public readonly int SideLength; 
    public Square(int SideLength) : base(4) 
    { 
     this.SideLength = SideLength; 
    } 
} 

dh zuweisen numSides im Polygon-Konstruktor und sideLength auf dem Platz - aber 4 für numSides zum Basiskonstruktor in Platz passieren.

Hoffe, dass hilft.

+0

Ja, du hast recht Ich habe es endlich geschafft zu arbeiten, du bist genau richtig: public readonly int sideLength; öffentlicher Platz (int sideLength): Basis (4) { this.SideLength = sideLength; } } –

Verwandte Themen