Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C# luokkien perintä ja samannimiset metodit

AtskaFin [20.03.2019 17:32:59]

#

Jos on kaksi luokkaa, joista ensimmäinen perii toisen luokan, niin voiko kummassakin olla samannimistä metodia? Siis luokan1 metodista kutsutaan toisen luokan metodia, mikä on saman niminen. Siis jotain tämän tapaista:

class luokka1 : luokka2
{
   public void metodi()
   {
      // Kutsuisi luokan2 metodia
      metodi();
   }
}

class luokka2
{
   public void metodi()
   {
      Console.WriteLine("Toimii!");
   }
}

Siis voihan tämän helposti tehdä antamalla metodeille hieman eri nimet, mutta kiinnostaisi, voiko näin tehdä.

Grez [20.03.2019 17:46:28]

#

Toki niin voi tehdä, jolloin tosin syntaksiin tarvii tehdä pari tarkennusta. Jos tuon toisen luokan metodi ei tee mitään muuta kuin kutsuu perityn luokan metodia, niin silloinhan se kannattaa vaan jättää pois.

class luokka1 : luokka2
{
    public new void metodi()
    {
        // Kutsuu luokan2 metodia
        base.metodi();
        //Olisi ehkä syytä tehdä jotain muutakin, tai muuten turha(?)
    }
}

class luokka2
{
    public void metodi()
    {
        Console.WriteLine("Toimii!");
    }
}

AtskaFin [20.03.2019 17:57:36]

#

Kiitos tiedosta, en ollut lisännyt tuota new -komentoa, niin siksi ilmoitteli ongelmaa.

Siis nuo metodit kyllä tekevät enemmän mitä tässä pikaisessa esimerkissä.

Grez [20.03.2019 18:15:50]

#

Joo kannattaa myös laittaa tuo base. alku, tai se kutsuu itseään (-> stack overflow)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta