2012-05-18 3 views
0

멍청한 질문입니다. 나는 종종 이런 종류의 것을 본다 :게임 게임 및 상속

 public Constructor(Game game, string effectAssetName) 
     : base(game) 

나는 두 번째 줄의 기능을 정말로 이해할 수 없다. 이것은 기지라고 부르지 만 무엇을 위해? 게임은 이미 게임 게임의 첫 번째 줄에 정의되어 있지 않습니까?

답변

1

"base"호출은 수퍼 클래스에서 호출 할 생성자를 결정합니다. (게임) 슈퍼 클래스가 초기화되지 않습니다. (정확한지 확인하십시오. 특정 생성자가 실행되지 않지만 사용할 수있는 매개 변수가없는 경우 생성자가 없을 수도 있습니다.)

일반적으로 Game 클래스를 하위 클래스로 추가하면 자신의 기능을 활성화하고 구현하려면 Game 클래스가 필요합니다. 당신은 본질적으로 새로운 애플,베이스 (hasPips)에 대한 호출을 만들 때

class Fruit 
{  
    private bool _hasPips; 

    public Fruit(bool hasPips) 
    { 
    _hasPips = hasPips; 
    } 
} 

class Apple : Fruit 
{ 
    private bool _isGreen; 

    public Apple(bool isGreen, bool hasPips) : base(hasPips) 
    { 
    _isGreen = isGreen; 
    } 
} 
이 가

다음 통화

MyGameObject.Constructor(game, effectAssetName) 

Game.Constructor(game); 

또한 (나쁜 :)) 예를하고 있습니다 과일 슈퍼 클래스의 hasPips 속성은 결코 설정되지 않을 것입니다 (사실이 경우에는 과일에서 base (bool) 생성자를 호출하지 않고 Apple에서 생성자를 만드는 것은 불법입니다) 과일에 매개 변수없는 생성자 없음)