2017-07-04 5 views
-1

Ich hoffe, Sie können mir mit dieser C# Frage helfen. Ich habe einige Klassen wie:C# Vererbung brauchen einfache Lösung

public abstract class Animal 
{ 
    public abstract void Walk(int param1,int param2); 
} 
public class Cat : Animal 
{ 
    public override void Walk(int param1,int param2){} 
} 
public class SmallCat : Cat 
{ 
    public override void Walk(int param1,int param2){} 
} 
public class Dog : Animal 
{ 
    public override void Walk(int param1,int param2){} 
} 

Und ich habe eine Controller-Klasse für alle Tiere.

someAnimal.Walk(a,b); 

Meine Frage ist: I dont Basisklasse will alle Details kennen bewegen, aber ich brauche mehr Parameter oder verschiedene Parameter für verschiedene Tiere auf Funktion Walk. Was ist ein guter Weg, um das zu lösen?

Die wechselnden Parameter werden übrigens nur benötigt, wenn der andere Benutzer (Controller) die Kontrolle über das Tier übernimmt.

Nachdem ich Ihre Kommentare gelesen habe, habe ich beschlossen, eine einfache UserController-Klasse zu verwenden, die alle Benutzerdetails enthält und diese an die Animal-Klasse sendet, wenn sie die Kontrolle darüber übernimmt.

+0

Nicht ganz sicher, was Sie meinen 'Ich möchte nicht, dass die Basisklasse alle Details über das Bewegen weiß ' – Alex

+3

Pass in etwas, das die Details enthält, die du brauchst? 'abstrakte void Walk (IWalkDetails walkDetails)' –

+0

hmm danke alex. Ich denke, dass es nicht möglich ist, einen Controller zu definieren, ohne alle Details zu kennen. –

Antwort

-3

Ich würde denken, dass universelle Parameter für das Gehen, die sich jedes Mal ändern können, wenn die Methode aufgerufen wird, Länge und Geschwindigkeit sein können. Irgendwelche anderen Parameter, die für eine konkrete Instanz spezifisch sind, könnten der Instanz entweder zum Zeitpunkt der Konstruktion oder durch einen Mutator bereitgestellt werden.

+0

Sie würden also jedes Mal, wenn Sie laufen möchten, eine neue Instanz benötigen? Das ist ziemlich schrecklich –

+0

@CamiloTerevinto Ich glaube wirklich nicht, dass du meine Antwort verstanden hast. –

+0

eigentlich ist dies ein Spiel, das ich entwickle und Tiere können von verschiedenen Benutzern gesteuert werden, aber das kann eine schöne Lösung sein. Der Benutzercontroller kann alle Details erkennen, wenn er die Kontrolle übernimmt. Vielen Dank. Ich weiß nicht, warum diese Antwort viele down votes –