2014-12-14 9 views
4

나는이 코드를 가지고 있으며 Liskov 대체를 보여줄 것이지만 기본 키워드가 2 개의 인수로 무엇을하는지 혼란 스럽다. 누군가 설명 할 수 있습니까?Constructor가 1 개의 인수를 사용하지만 기본 키워드가 2 개의 인수를 사용하는 경우 무슨 일이 일어나는가

class Rectangle 
{ 
    public Rectangle(int width, int height) 
    { 
     Width = width; 
     Height = height; 
    } 
    public virtual int Height {get;set;} 
    public virtual int Width {get;set;} 
    public int Area 
    { 
     get { return Height*Width } 
} 

이제 2 개의 인수로 기본 클래스를 상속하는 사각형 클래스의 경우. 이 다음 방법 광장 (INT)이

private class Square : Rectangle 
{ 
    public Square(int size) : base(size, size) {} ///here is my confusion 
    public override int Width 
    { 
     get {return base.Width} 
     set { base.Width = value; base.Height = value} 
    } 
    public override int Height 
    { /// same thing as Width } 
} 
+0

그 부모 생성자 – DarkBee

답변

5

base(size, size) (이 경우에 사각형의) 부모 생성자 호출을 다른 이름으로 기본 클래스의 방법을 사용할 수 있습니다 이유도 궁금해서,이 생성자는이 개 인수를, 그건 size가 두 번 지정되는 이유.

정사각형이 동일한 높이를 가지며, 크기 파라미터 모두 widthheight

+1

호출에 사용될 수 폭해야하므로 그래서 스퀘어에 1의 값을 전달하는 경우 (도 5). 기본 케이스의 높이와 너비를 설정합니까? –

+1

@christopherclark 예, 있습니다. 'Square (5)'는'height'와'width' 멤버를'5 '로 설정할'Rectangle (5, 5)'를 호출합니다. –

+0

감사합니다. 그것은 많은 도움이됩니다. –