Ich bin nicht wirklich sicher, was besser aussieht oder wann verwende ich wirklich in abstrakten Klassen und Eigenschaften oder wann nicht abstrakte Eigenschaften zu verwenden. Ich werde versuchen, ein einfaches Beispiel zu geben. Nehmen wir an, ich habe folgendes:Nicht sicher, wann eine abstrakte Eigenschaft zu verwenden ist und wann nicht
abstract class Human
{
public GenderType Gender { get; set; }
public string Name { get; set; }
public Date Born { get; set; }
public bool IsNerd { get; set; }
abstract public void Speak();
abstract public void Sleep();
abstract public void AnoyingPeopleOnStackOverflow();
//... so on
}
class Peter : Human
{
//Peter is special, he got a second name
//But thats all, everything else is the same as like on other humans
public string SecondName { get; set; }
//...override abstract stuff
}
Ist das in Ordnung? Wie ich verstanden habe, muss ich keine abstrakte Eigenschaft verwenden, wenn ich sie nicht überschreiben möchte. Und in dieser Situation wäre es in Ordnung, nur die Methoden wie Speak
, Sleep
und so weiter sollten abstrakt sein.
Nun, wenn das in Ordnung ist, wann oder sollte ich eine abstrakte Eigenschaft verwenden?
"Wann würde oder sollte ich eine abstrakte Eigenschaft verwenden" --- Wenn Sie behaupten wollen, dass die Kindklasse eine spezifische Methodenimplementierung bereitstellen muss – zerkms
1) Wenn dies Java wäre, gäbe es wahrscheinlich kein Problem. Sie würden wahrscheinlich nur eine "Schnittstelle" verwenden. Das ist im Wesentlichen das, was du hier in C# tust, oder?2) Mein persönliches Gefühl ist, dass es, wenn es Teil des "Vertrags" sein muss, angemessen ist, es in Ihrer abstrakten Klasse zu deklarieren. Mit anderen Worten, ich denke, was Sie getan haben, ist vollkommen in Ordnung. IMHO ... – paulsm4
@ paulsm4 können Sie das auch mit C# tun. –