Avatar billede Slettet bruger
16. august 2010 - 20:47 Der er 9 kommentarer og
1 løsning

Lave Derived class fra Base?

Jeg har en base klasse, hvor jeg sætter nogle fælles værdier i før jeg ved hvad klassen endeligt bliver til. Men hvordan opretter jeg min derived klasse ud fra min base? Altså jeg vil lave et nyt objekt  der arver fra min base klasse men med værdier allerede sat i en base klasse. How?
Avatar billede arne_v Ekspert
16. august 2010 - 20:58 #1
Jeg er ikke sikker paa at jeg forstaar spoergsmaalet.

Standard C# syntax tillader:

public class P
{
    private int pv;
    public P(int pv)
    {
        this.pv = pv;
    }
    ...
}

public class C : P
{
    private int cv;
    public C(int pv, int cv) : base(pv)
    {
        this.cv = cv;
    }
    ...
}

P o = new C(123,456);
Avatar billede Slettet bruger
16. august 2010 - 21:03 #2
Altså, jeg sætter nogle værdier på min klasse, som ind til videre kun er base, da jeg ikke ved hvad den bliver til, men jeg ved hvilke base værdier den skal have.

Senere vil jeg så lave en derived klasse som bliver oprettet, men altså har værdierne fra min base klasse sat på forhånd. Kan jeg ikke tage en base klasse som parameter i min derived klasse somehow?
Avatar billede arne_v Ekspert
16. august 2010 - 21:17 #3
Du kan godt lave en C constructor som tager en P som argument, men saa skal du kopiere alle vaerdier over.
Avatar billede Slettet bruger
16. august 2010 - 22:09 #4
altså kopiere dem manuelt statisk, jeg kan ikke gøre det direkte?
Avatar billede Syska Mester
16. august 2010 - 22:23 #5
value type vs reference type. google det og deraf har du svaret på hvorfor du ikke kan.

Eventuelt http://automapper.codeplex.com/

Jeg er nu heller ikke sikker på at jeg helt forstår hvad det er du vil.

Du laver en klasse som du ikke rigtig ved hvad er/bliver til ... hvorfor laver du den så?

Det er første ting som spriger lige i mine øjne.

Men det lyder stadig til du vil det som arne_v skriver.
Avatar billede janus_007 Nybegynder
16. august 2010 - 23:05 #6
Kan du ikke forklare hvad du vil opnå designmæssigt? Det vil være nemmere at forstå!
Avatar billede arne_v Ekspert
17. august 2010 - 09:55 #7
Du kan ikke lave en:

public C(P p)
{
    (P)this = p;
}

hvis det er det som du spoerger om.
Avatar billede 2705 Nybegynder
18. august 2010 - 15:52 #8
Hvis jeg forstår det korrekt giver du bare dine variable i base-klassen de værdier de skal have. Når du så arver fra den klasse kan du sætte variablene derfra.

Altså:

BaseClass
{
  int v = 10;
}

DerivedClass : BaseClass
{
  v = 20;
}
Avatar billede Slettet bruger
24. august 2010 - 16:04 #9
Jeg kopierede værdierne over manuelt, arne smid et svar.
Avatar billede arne_v Ekspert
24. august 2010 - 16:11 #10
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester