Osaako joku sanoa, miten voidaan viitata yliluokan taulukko-oliosta aliluokan metodiin?
Viittaaminen aliluokan metodiin
6
721
Vastaukset
- 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 YlaluokkaKiitos 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; iHuoh, 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
AlaluokkaEikö tuossa voisi olla:
if(instanssit[i] instanceof Ylaluokka)
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 1454097
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ä, Mi1123700- 202575
Kyllä poisto toimii
Esitin illan suussa kysymyksen, joka koska palstalla riehuvaa häirikköä ja tiedustelin, eikö sitä saa julistettua pannaa281871"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 miekalla221727Haluan jutella kanssasi Nainen
Olisiko jo aika tavata ja avata tunteemme...On niin paljon asioita joihin molemmat ehkä haluaisimme saada vastaukset...O151619Poliisiauto Omasp:n edessä parkissa
Poliisiauto oli parkissa monta tuntia Seinäjoen konttorin edessä tänään. Haettiinko joku tai jotain pankista tutkittavak191595Haluan tavata Sinut Rakkaani.
Olen valmis Kaikkeen kanssasi...Tulisitko vastaa Rakkaani...Olen todella valmistautunut tulevaan ja miettinyt tulevaisuu301523Hermo mennyt sotealueeseen?
Nyt hammaslääkäriaika peruttiin neljännen kerran. Perumiset alkoi tammikuussa. Nyt uusi aika elokuulle!????901496Onko mies niin,
että sinulle ei riitä yksi nainen? Minulle suhde tarkoittaa sitoutumista, tosin eihän se vankila saa olla kummallekaan.181491