2012-03-24 7 views
1

Ich habe Spiel XNA und es enthält diese KlassenWie kann ich erben alle Eigenschaften von allen Basisklassen in C#

public partial class Bird : Microsoft.Xna.Framework.GameComponent 
{ 
    private Vector2 velocity; 
    private Vector2 position; 
    .......................... 
    public Vector2 Velocity 
    { 
     get { return velocity; } 
     set { velocity = value; } 
    } 
    public Vector2 Position 
    { 
     get { return position; } 
     set { position = value; } 
    } 

} 
public class BigRedBird : Microsoft.Xna.Framework.GameComponent,Bird 
{ 

    public BigRedBird(Game game ,Rectangle area,Texture2D image) 
     : base(game) 
    { 
     // TODO: Construct any child components here 

    } 
    ..................... 
} 

Wie kann ich auf Position und Geschwindigkeit von Bird-Klasse und verwenden Sie es in BigRedBird Klasse in der Konstrukteur.

Dank

Antwort

3

So starten Sie mit Ihnen aus zwei Klassen erben, die illegal wäre.

Da Bird bereits von GameComponent erbt, ist es kein Problem, dass Sie es nicht in BigRedBird erwähnen, es ist bereits durch Vogel geerbt!

Als BigRedBird von Bird erbt wird es alle seine Eigenschaften, so dass Sie nur

public class BigRedBird : Bird 
{ 

    public BigRedBird(Game game ,Rectangle area,Texture2D image) 
     : base(game) 
    { 
     // TODO: Construct any child components here 
     this.Position= .... 

    } 
    ..................... 
} 
1

Inherit BigRedBird von Bird nur tun müssen. Auf diese Weise können Sie weiterhin auf Daten von GameComponent zugreifen, da Bird von ihm erbt.

Übrigens ist das Erben von mehreren Klassen in C# nicht möglich.

2

C# unterstützt keine Mehrfachvererbung, daher lautet die Antwort auf die Frage in Ihrem Titel - Sie können nicht. Aber ich glaube nicht, dass Sie das versucht haben.

hinzufügen geeignete Konstrukteuren zu Ihrem Vogel Klasse:

public partial class Bird : Microsoft.Xna.Framework.GameComponent 
{ 
    public Bird(Game game) : base(game) 
    { 
    } 

    public Bird(Game game, Vector2 velocity, Vector2 position) : base(game) 
    { 
     Velocity = velocity; 
     ... 
    } 
} 

Und dann in der abgeleiteten Klasse die Basisklasse Konstruktor aufrufen

public class BigRedBird : Bird 
{ 
    public BigRedBird(Game game, ...) : base(game, ...) 
    { 
    } 
} 

Oder

public class BigRedBird : Bird 
{ 
    public BigRedBird(Game game, ...) : base(game) 
    { 
     base.Velocity = ...; // note: base. not strictly required 
     ... 
    } 
}