Osaako joku sanoa, miten voidaan viitata yliluokan taulukko-oliosta aliluokan metodiin?
Viittaaminen aliluokan metodiin
6
760
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
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 e1684377Jos 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ä372504- 1562162
Kesän odotuksia hyrynsalmella
Kyllä kesällä hyrynsalmellakin on mahdollisuus osallistua kylän menoon monella tavalla . On kaunislehdon talomuseolla161699- 811318
Voi Rakas siellä
Olet ollut mun ajatuksissa taas koko päivän. Olet ihmeellinen kertakaikkiaan ja arvostan sinua niin paljon❤️Minulla ei o241261Ohhoh! 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ää: https321173Pirkkalan koulussa puukotus, oppilas puukotti kolmea
Ilmeisesti tyttöjä ollut kohteena.1441142Erika selvisi hienosti ennakkosuosikin paineista
Hienostihan se meni. Erika jätettiin yksin, eikä häntä tuettu, oli euroviisukiusattu, silti suoriutui ensiluokkaisesti.103935Pirre vaatii nyt karhuja ammuttavaksi
Ylellä taas hauskaa lieksa uutista. Karhujen kannanhoidollinen metsästys on Lieksan kaupungin mielestä välttämätöntä.116862