2017-02-16 14 views
-1

Square上的構造函數需要設置自己的參數,並從父類Polygon繼承參數。如何使用構造函數鏈接:base()存在?

class Polygon 
{ 
    public int NumSides; 

    public Polygon(int numSides) 
    { 
     NumSides = numSides; 
    } 
} 

class Square : Polygon 
{ 

    public int SideLength; 

    public Square (int sideLength) : this(numSides) : base(numSides) 
    { 
     SideLength = sidelength; 
     NumSides = NumSides; 
    } 
} 
+1

'即numSides =即numSides;'是什麼意思? –

+1

您是否想知道如何調用基礎構造函數? –

+0

NumSides =邊數。 – DotNetChic

回答

2
public Square (int sideLength) 
     //: this(numSides) // would call this ctor again, an endless loop 
      : base(4)   // because a square has 4 sides 
{ 
    SideLength = sidelength; 
    // NumSides = NumSides; // action already taken in the base class 
} 
1

的參數傳遞給基類必須是子類的構造函數的一部分:

class Square : Polygon { 

    public int SideLength; 

    public Square (int sideLength, int numSides) : base(numSides) { 
     SideLength = sidelength; 
     // NumSides will be handled by base class ctor 
    } 

    // ctor overload with fixed number of sides for squares 
    public Square (int sideLength) : this(sideLength, 4) { 
    } 
}