Viittaaminen aliluokan metodiin

Tietämätön?

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

6

802

    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. Veroaste on Suomessa viitisen prosenttiyksikköä liian matala

      Veropohjaa on rapautettu käytännössä koko kulunut vuosituhat, jonka vuoksi valtion menoja on jouduttu rahoittamaan velka
      Maailman menoa
      67
      2415
    2. Tiedän satavarmasti ettet tule koskaan

      Uskaltamaan mitään. Ei me tulla edes näkemään koskaan.
      Ikävä
      66
      1387
    3. Kyläkauppias ajoi kännissä töistä kotiin

      Ei edes kallis auto estä humalassa ajamista, vaikka luulisi alkolukko olevan sellaisessa jo vakiovarusteena. https://ww
      Maailman menoa
      76
      1210
    4. EU komissio - EU-elpymisrahoja voidaan käyttää TILAPÄISESTI väärin!

      Espanja ohjasi miljardeja euroja – Nyt EU-komissio teki yllättävän paljastuksen Skandaaliksi noussut Espanjan EU-rahoje
      Maailman menoa
      4
      1137
    5. Miks me oikein

      Rakastuttiin vaikka kaikki on mahdotonta?
      Ikävä
      79
      855
    6. Kiitos upeasta palvelusta kukkamyyjä

      Kiitos sinulle upea kaunis kukkamyyjä Kuhmon torilla 🌹 Upea iloinen asenteesi ja kaunis hymysi pelasti päiväni ❤️ Jäi
      Kuhmo
      19
      800
    7. Nainen, mikset lähetä

      miehelle viestiä? Tiedän, että sulla on asiaa ja kysyttävää.
      Ikävä
      43
      688
    8. Ratikka Turkuun

      Ei hyvä. Ja syy on siinä , kukaan ei osaa suunnitella oikeaa reittiä. Pitää huomioide, kiskoja sijaintia ei voi muutta
      Turku
      83
      672
    9. Miehet trikoissaan

      On se kauhian näkköistä, kun miehet tiukossa trikkoissa juoksentelloo ja mulukku paestaa trikkoijjen läpi. Kahtokkee pe
      Suomussalmi
      25
      649
    10. Rakastan sinua

      Yhä.
      Ikävä
      30
      646
    Aihe