Avatar billede clemmensen Nybegynder
12. november 2003 - 15:24 Der er 4 kommentarer og
1 løsning

nedarvningsfejl mellem 2 klasser

Jeg har to klasser, Location og Display. Display skal nedarve alt fra Location, hvilket også burde være simpelt nok, men af en eller anden grund får jeg altid en error - "No overload for method 'Location' takes '0' arguments" Hvad kan der være galt?

Her er klasserne:

using System;

namespace Inf3.eXhibIT
{
    /// <summary>
    /// Display er den engelske oversættelse af "stand".
    /// </summary>
    public class Display:Location
    {   
        private string displayNumber;
        private string category;


        public Display(string displayNumber, string category)
        {
            setDisplayNumber(displayNumber);
            setCategory(category);
        }
       
        public void setDisplayNumber(string displayNumber){
            this.displayNumber = displayNumber;
        }
       
        public void setCategory(string category)
        {
            this.category = category;
        }
       
        public string getDisplayNumber()
        {
            return(this.displayNumber);
        }
       
        public string getCategory()
        {
            return(this.category);
        }
       
        public void save(Display display)
        {
            DisplayDB db = new DisplayDB();
            db.insertToDB(this);
        }
    }
}




using System;

namespace Inf3.eXhibIT {
    /// <summary>
    /// Summary description for Class2.
    /// </summary>
    public class Location {
        private string id;
        private string coordinate;
        private    string name;
        private string description;

        public Location(string id,string coordinate,string name, string description) {
            this.setId(id);
            this.setCoordinate(coordinate);
            this.setName(name);
            this.setDescription(description);
        }
        public Location(string coordinate,string name, string description) {
            this.setCoordinate(coordinate);
            this.setName(name);
            this.setDescription(description);
        }
        //Her efter følger alle set medtoder//
        public void setId(string id) {
            this.id = id;
        }
        public void setCoordinate(string coordinate) {
            this.coordinate =coordinate;
        }
        public void setName(string name) {
            this.name = name;
        }
        public void setDescription(string description) {
            this.description = description;
        }
        //Her efter følger alle get medtoder//
        public string getId() {
            return(id);
        }
        public string getCoordinate() {
            return(coordinate);
        }
        public string getName() {
            return(name);
        }
        public string getDescription() {
            return(description);
        }
    }
}
Avatar billede repsak Nybegynder
12. november 2003 - 15:36 #1
Det første som sker (bag din ryg) er at superklassens konstruktør kalses. Hvis ikke du selv skriver det så kaldes konstruktøren med 0 parametre. Men da din superklasse ikke definerer en 'tom' konstruktør, kan en sådan ikke kaldes. Du skal derfor skrive
base(dine paramtre); som den første linje i subklasens konstruktør
Avatar billede repsak Nybegynder
12. november 2003 - 15:40 #2
hov det var ikke helt rigtigt... jeg brugte Javasyntaks. Her er den rigtige model:

class A{
    public A(string a){
    }

}

class B :A{
    B() : base("hej"){

    }
}
Avatar billede clemmensen Nybegynder
12. november 2003 - 17:22 #3
Jeg er ikke helt sikker på at jeg forstår. Kan du prøve at sætte et eksempel ind i ovenstående kode?
Avatar billede repsak Nybegynder
12. november 2003 - 17:31 #4
public class Display:Location
    {   
        private string displayNumber;
        private string category;


        public Display(string displayNumber, string category) : Location("coordinate","name", "description"){
            setDisplayNumber(displayNumber);
            setCategory(category);
        }
På mig virker din klassestruktur lidt underlig. Hvordan kan et Display være en generalisering af Location...? Men ovenstående kode skulle virke :-)
Avatar billede clemmensen Nybegynder
12. november 2003 - 17:43 #5
Så fangede jeg den. Tusind tak for hjælpen :o)
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