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
      86
      2483
    2. Tiedän satavarmasti ettet tule koskaan

      Uskaltamaan mitään. Ei me tulla edes näkemään koskaan.
      Ikävä
      67
      1435
    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
      81
      1321
    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
      11
      1192
    5. Miks me oikein

      Rakastuttiin vaikka kaikki on mahdotonta?
      Ikävä
      79
      905
    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
      890
    7. Nainen, mikset lähetä

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

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

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

      Yhä.
      Ikävä
      30
      696
    Aihe