Viittaaminen aliluokan metodiin

Tietämätön?

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

6

721

    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. 145
      4097
    2. Katso: Ohhoh! Miina Äkkijyrkkä sai käskyn lähteä pois Farmi-kuvauksista -Kommentoi asiaa: "En ole.."

      Tämä oli shokkiyllätys. Oliko tässä kyse tosiaan siitä, että Äkkijyrkkä sanoi asioita suoraan vai mistä.... Tsemppiä, Mi
      Tv-sarjat
      112
      3700
    3. Voi kun mies rapsuttaisit mua sieltä

      Saisit myös sormiisi ihanan tuoksukasta rakkauden mahlaa.👄
      Ikävä
      20
      2575
    4. Kyllä poisto toimii

      Esitin illan suussa kysymyksen, joka koska palstalla riehuvaa häirikköä ja tiedustelin, eikö sitä saa julistettua pannaa
      80 plus
      28
      1871
    5. "Joka miekkaan tarttuu, se siihen hukkuu"..

      "Joka miekkaan tarttuu, se siihen hukkuu".. Näin puhui jo aikoinaan Jeesus, kun yksi hänen opetuslapsistaan löi miekalla
      Yhteiskunta
      22
      1727
    6. Haluan jutella kanssasi Nainen

      Olisiko jo aika tavata ja avata tunteemme...On niin paljon asioita joihin molemmat ehkä haluaisimme saada vastaukset...O
      Ikävä
      15
      1619
    7. Poliisiauto Omasp:n edessä parkissa

      Poliisiauto oli parkissa monta tuntia Seinäjoen konttorin edessä tänään. Haettiinko joku tai jotain pankista tutkittavak
      Seinäjoki
      19
      1595
    8. Haluan tavata Sinut Rakkaani.

      Olen valmis Kaikkeen kanssasi...Tulisitko vastaa Rakkaani...Olen todella valmistautunut tulevaan ja miettinyt tulevaisuu
      Ikävä
      30
      1523
    9. Hermo mennyt sotealueeseen?

      Nyt hammaslääkäriaika peruttiin neljännen kerran. Perumiset alkoi tammikuussa. Nyt uusi aika elokuulle!????
      70 plus
      90
      1496
    10. Onko mies niin,

      että sinulle ei riitä yksi nainen? Minulle suhde tarkoittaa sitoutumista, tosin eihän se vankila saa olla kummallekaan.
      Tunteet
      18
      1491
    Aihe