Tjenare har väldiga problem med att förstå arv, min uppgift är denna: I sin enklaste form kan man säga att arv används för att minska mängden kodArv i C#
Jag ska göra en applikation som har ett antal listboxes och textfält som fylls av enums. När dessa är ifyllda och man trycker på spara ska ett objekt av Bil skapas. Nu är det så att Bil har en hel del fält som är generella för alla underklasser så därför ska klass Toyota ärva av Bil.
Så långt är jag med och har min basklass samt min klass Toyota : Bil. Problemet blir när jag ska spara, hur gör jag då? Ska jag skicka datan som parametrar till klass Toyota och isåfall vad gör klass Bil för nytta? Jag kan förstå om Klass Bil hade förutbestämda variabler men nu har ju bara klass Bil en definition av fälten?
Säg att jag har två variabler, 4 dörrar och en baklucka, dessa fält finns definerade i klassen Bil eftersom alla bilar har dessa men sedan har klassen toyota ett eget fält som ska vara färg till exempel. Hur ska detta göras då? Jag kan ju inte göra en konstruktor som säger public Toyota(variabel1, variabel2) : base(variabel1, variabel2) väl eftersom bil klassen innehåller ju inga parametrar?
Om det är ett dåligt exempel ber jag om ursäkt, kom inte på något men har väldigt svårt att greppa detta och använda det i min applikation. Sv: Arv i C#
finns en uppsjö med artiklar i ämnet. tex.
http://msdn.microsoft.com/en-us/library/ms173149.aspx
http://www.codeproject.com/Articles/1445/Introduction-to-inheritance-polymorphism-in-C
Svar på dina konkreta frågor.
Du kan skicka dina parametrar till toyota. då sätter konstruktorn dem i sig själv efter som basklassen är exponerad i toyota. du spar deklarationen av fälten när du skapar nästa bilmärke om du har en basklass med de gemensamma fälten.
Om du vill skicka in parametar i konstruktorn på toyota så kan du skicka alla även de som ligger i basklassen och sätta dem direkt i toyotas konstruktor efter som de är exponerad i den klassen.
ex. public toyota(a,b,c)
{
// base kan uteslutas här eftersom de redan är exponerade i toyota
base.A = a;
base.B = b
C = c;
}
sätter du däremot a och b i alla klasser som ärver Bil så kan du lägga den delen av konstrukorn där.
hoppas jag inte rört till det för dig :)