Viittaaminen aliluokan metodiin

Tietämätön?

Osaako joku sanoa, miten voidaan viitata yliluokan taulukko-oliosta aliluokan metodiin?

6

760

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • foobarfoo

      Samanlailla kuin normaalin luokan metodiin. Eli jotain tän tyylistä yliluokassa:

      //aliluokat-olio on List ilmentymä
      for(Aliluokka aliluokka : aliluokat){
      aliluokka.metodiX();
      }

      • keksa1

        //Alaluokka extends Ylaluokka. Molemmissa metodi getMjono(omanluokannimi)

        Ylaluokka lk1 = new Ylaluokka();
        Ylaluokka lk2 = new Alaluokka();
        Alaluokka lk3 = new Alaluokka();

        Ylaluokka[] instanssit = {lk1,lk2,lk3};

        System.out.println(instanssit[0].getMjono());
        System.out.println(instanssit[1].getMjono());
        System.out.println(instanssit[2].getMjono());

        //tulostaa

        Ylaluokka
        Alaluokka
        Alaluokka

        Javassa on käytössä late binding ja ylikirjoitettu metodi ajetaan luokan instanssista joka sen ylikirjoittaa

        Alaluokan sisällä voi kutsua koodissa Ylaluokan-metodia super.getMjono();

        C#:ssa taitaa defaulttina olla käytössä early binding eli castaamalla voi kutsua yläluokan metodia alaluokan instanssista (tää on kyllä mututietoa)

        Alaluokka lk1 = new Alaluokka();
        ((Ylaluokka)lk1).getMjono(); //tulostaa Ylaluokka


      • Tietämätön?
        keksa1 kirjoitti:

        //Alaluokka extends Ylaluokka. Molemmissa metodi getMjono(omanluokannimi)

        Ylaluokka lk1 = new Ylaluokka();
        Ylaluokka lk2 = new Alaluokka();
        Alaluokka lk3 = new Alaluokka();

        Ylaluokka[] instanssit = {lk1,lk2,lk3};

        System.out.println(instanssit[0].getMjono());
        System.out.println(instanssit[1].getMjono());
        System.out.println(instanssit[2].getMjono());

        //tulostaa

        Ylaluokka
        Alaluokka
        Alaluokka

        Javassa on käytössä late binding ja ylikirjoitettu metodi ajetaan luokan instanssista joka sen ylikirjoittaa

        Alaluokan sisällä voi kutsua koodissa Ylaluokan-metodia super.getMjono();

        C#:ssa taitaa defaulttina olla käytössä early binding eli castaamalla voi kutsua yläluokan metodia alaluokan instanssista (tää on kyllä mututietoa)

        Alaluokka lk1 = new Alaluokka();
        ((Ylaluokka)lk1).getMjono(); //tulostaa Ylaluokka

        Kiitos avusta, mutta entä jos metodi on vain alaluokassa? Sen nimistä metodia ei ole yläluokassa ja nyt olen yläluokassa ja tarvitsen alaluokan metodia. Uusia metodeja ei voi kirjoittaa, vaan siihen täytyisi päästä käsiksi kutsumalla sitä alaluokasta. Onko tämä edes mahdollista? Jos laitan muuttuja.metodi(); niin mihin väliin voisin työntää sen alaluokan, josta se pitää hakea?


      • foobarfoo
        Tietämätön? kirjoitti:

        Kiitos avusta, mutta entä jos metodi on vain alaluokassa? Sen nimistä metodia ei ole yläluokassa ja nyt olen yläluokassa ja tarvitsen alaluokan metodia. Uusia metodeja ei voi kirjoittaa, vaan siihen täytyisi päästä käsiksi kutsumalla sitä alaluokasta. Onko tämä edes mahdollista? Jos laitan muuttuja.metodi(); niin mihin väliin voisin työntää sen alaluokan, josta se pitää hakea?

        Käytetään ylempää esimerkkiä hyväksi hiukan muuttaen:
        //Alaluokka extends Ylaluokka. Aliluokassa on metodi getAlijono(omanluokannimi)


        Ylaluokka lk1 = new Ylaluokka();
        Ylaluokka lk2 = new Alaluokka();
        Alaluokka lk3 = new Alaluokka();

        Ylaluokka[] instanssit = {lk1,lk2,lk3};
        for(int i = 0; i


      • foobarfoo
        foobarfoo kirjoitti:

        Käytetään ylempää esimerkkiä hyväksi hiukan muuttaen:
        //Alaluokka extends Ylaluokka. Aliluokassa on metodi getAlijono(omanluokannimi)


        Ylaluokka lk1 = new Ylaluokka();
        Ylaluokka lk2 = new Alaluokka();
        Alaluokka lk3 = new Alaluokka();

        Ylaluokka[] instanssit = {lk1,lk2,lk3};
        for(int i = 0; i

        Huoh, kokeillaas uudestaan.

        for(int i=0; i pienempi kuin instanssit.length; i ){
        if(instanssit[i] instanceof Alaluokka){
        Alaluokka ala = (Alaluokka)instanssit[i];
        System.out.println(ala.getAlijono());
        }
        }
        //tulostaa
        Alaluokka
        Alaluokka


      • Nimimerkki.
        foobarfoo kirjoitti:

        Huoh, kokeillaas uudestaan.

        for(int i=0; i pienempi kuin instanssit.length; i ){
        if(instanssit[i] instanceof Alaluokka){
        Alaluokka ala = (Alaluokka)instanssit[i];
        System.out.println(ala.getAlijono());
        }
        }
        //tulostaa
        Alaluokka
        Alaluokka

        Eikö tuossa voisi olla:

        if(instanssit[i] instanceof Ylaluokka)


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Epäily: Oppilas puukotti kolmea Pirkkalan koululla

      Tämänhetkisen tiedon mukaan ainakin kolme oppilasta on loukkaantunut puukotuksessa Pirkkalan Vähäjärven koululla. Myös e
      Pirkanmaa
      168
      4377
    2. Jos olisit täällä

      Tosin en tiiä miks oisit. (Ja hävettää muutenkin kun ei muka muulla tavoin osaa kertoa tätäkään) Jos jollain pienellä
      Ihastuminen
      37
      2504
    3. Tämän hetken

      Terveiset kaivatullesi ⬇️
      Ikävä
      156
      2162
    4. Kesän odotuksia hyrynsalmella

      Kyllä kesällä hyrynsalmellakin on mahdollisuus osallistua kylän menoon monella tavalla . On kaunislehdon talomuseolla
      Hyrynsalmi
      16
      1699
    5. Vieläkö sä toivot

      Meidän välille jotain?
      Ikävä
      81
      1318
    6. Voi Rakas siellä

      Olet ollut mun ajatuksissa taas koko päivän. Olet ihmeellinen kertakaikkiaan ja arvostan sinua niin paljon❤️Minulla ei o
      Tunteet
      24
      1261
    7. Ohhoh! KAJ laukoi suorat sanat somessa - V-sana mainittu!

      Ohhoh! Mitäs mieltä olet tästä huumoriryhmä KAJ:sta? Bara bada bastu on kyllä aikamoinen korvamato... Lue lisää: https
      Euroviisut
      32
      1173
    8. Pirkkalan koulussa puukotus, oppilas puukotti kolmea

      Ilmeisesti tyttöjä ollut kohteena.
      Maailman menoa
      144
      1142
    9. Erika selvisi hienosti ennakkosuosikin paineista

      Hienostihan se meni. Erika jätettiin yksin, eikä häntä tuettu, oli euroviisukiusattu, silti suoriutui ensiluokkaisesti.
      Maailman menoa
      103
      935
    10. Pirre vaatii nyt karhuja ammuttavaksi

      Ylellä taas hauskaa lieksa uutista. Karhujen kannan­hoidollinen metsästys on Lieksan kaupungin mielestä välttämätöntä.
      Lieksa
      116
      862
    Aihe