Avatar billede heinmain Nybegynder
06. august 2010 - 12:47 Der er 5 kommentarer og
1 løsning

Inheritance instancering.

Hej Folkens.

Jeg sidder og er igang med at prøve at få en forståelse for inheritance, jeg vil mene jeg har fået en okay forståelse C#.

Men i et kode eksemple møder jeg den her.

GenericCustomer arabel = new Nevermore60Customer("Arabel Jones"); (Hele kode eksemplet er nedenfor.

Altså jeg ved godt man opretter et object altså. Altid kun brugt denne måde at oprette objecter.
TestRef ObjTestRef = new TestRef();

Men kan ikke se mig ud af den anden der, hvad der sker og hvordan. Søgt på google og den bog jeg læser forklarer udemidbart ikke hvad der sker. Selv gået helt tilbage i starten for at se om der skulle være nået.


namespace Wrox.ProCSharp.OOProg
{
    using System;


    public abstract class GenericCustomer
    {
        private string name;

        public GenericCustomer()
        {
            name = "<no name>";
        }

        public GenericCustomer(string name)
        {
            this.name = name;
        }


        public string Name
        {
            get { return name; }
            set { name = value; }
        }

    }

    public class Nevermore60Customer : GenericCustomer
    {
        private string referrerName;
        private uint highCostMinutesUsed;

        public Nevermore60Customer(string name)
            : this(name, "<None>")
        {
        }

        public Nevermore60Customer(string name, string referrerName)
            : base(name)
        {
            this.referrerName = referrerName;
        }

        public string ReferrerName
        {
            get { return referrerName; }
            set { referrerName = value; }
        }

    }


    public class MainEntryPoint
    {
        public static void Main()
        {
            GenericCustomer arabel = new Nevermore60Customer("Arabel Jones");
        }
    }
}
Avatar billede heinmain Nybegynder
06. august 2010 - 12:48 #1
Undskylder for evt. Stavefejl.
Avatar billede bvli Praktikant
06. august 2010 - 13:08 #2
Det smarte ved arv er er jo netop polymorfi. At et objekt kan være flere forskellige ting.

Altså din Nevermore60Customer er af typen  Nevermore60Customer - men efter som han også er en GenericCustomer (som han jo arver fra), så kan han også antage den form. Han er altså begge dele.

Når de så laver denne:
GenericCustomer arabel = new Nevermore60Customer("Arabel Jones")

Så fortæller de kompileren at de vil arbejde med et objekt af typen GenericCustomer (og altså kun tilgå GenericCustomer's members). Og de instancierer et objekt af typen Nevermore60Customer, da han OGSÅ er en GenericCustomer.
Avatar billede Syska Mester
06. august 2010 - 13:17 #3
Ja, og hvis GenericCustomer har nogen properties/methods som er "overriden" i Nevermore60Customer ... er det dem som bliver kaldt i stedet for de oprindelige, det er her noget af det rigtig smarte kommer ind ved inheritance.

mvh
Avatar billede heinmain Nybegynder
06. august 2010 - 13:43 #4
Aha. Kan se hvis jeg så skrive
Nevermore60Customerarabel = new Nevermore60Customer("Arabel Jones").
Kan jeg tilgå alle medlemmer og ikke kun dem i GenericCustomer.
Jeps havde fået styr på det med Virtual og override.

Der helt klart lidt øvelse før den sidder helt haft på rygraden. Men jeres svar var helt klart en god hjælp.
Avatar billede Syska Mester
06. august 2010 - 14:16 #5
Ja, det kommer ikke bare fra dag til dag :-)

Specielt ikke når det skal anvendes IRL.

og svar.
Avatar billede Syska Mester
06. august 2010 - 16:35 #6
bvli se http://www.eksperten.dk/spm/915724

Deling af point
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

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