Non sono veramente sicuro di cosa sembra meglio o quando uso veramente in classi e proprietà astratte, o quando utilizzare proprietà non astratte. Proverò a fare un semplice esempio. Diciamo che ho questo:Non so quando utilizzare una proprietà astratta e quando non è
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
}
Va bene? Come ho capito, non devo usare una proprietà astratta se non voglio sovrascriverlo. E in questa situazione sarebbe ok, solo i metodi come Speak
, Sleep
e così via dovrebbero essere astratti.
Ora, se questo è ok, quando dovrei o dovrei usare una proprietà astratta?
"Quando dovrei o dovrei usare una proprietà astratta" --- quando vuoi affermare che la classe figlio deve fornire un'implementazione specifica del metodo – zerkms
1) Se questo fosse Java, probabilmente non ci sarebbero problemi. Probabilmente useresti solo una "interfaccia". Questo è essenzialmente quello che stai facendo qui in C#, non è vero?2) Il mio sentimento personale è che se ha bisogno di essere parte del "contratto", allora è appropriato dichiararlo nella tua classe astratta. In altre parole, penso che quello che hai fatto sia perfettamente OK. IMHO ... – paulsm4
@ paulsm4 puoi farlo anche con C#. –