Osaako joku sanoa, miten voidaan viitata yliluokan taulukko-oliosta aliluokan metodiin?
Viittaaminen aliluokan metodiin
6
753
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
- 1873886
Tekisi niin mieli laittaa sulle viestiä
En vaan ole varma ollaanko siihen vielä valmiita, vaikka halua löytyykin täältä suunnalta, ja ikävää, ja kaikkea muuta m911834Miksi ihmeessä?
Erika Vikman diskattiin, ei osallistu Euroviisuihin – tilalle Gettomasa ja paluun tekevä Cheek281512- 1651372
Erika Vikman diskattiin, tilalle Gettomasa ja paluun tekevä Cheek
Erika Vikman diskattiin, ei osallistu Euroviisuihin – tilalle Gettomasa ja paluun tekevä Cheek https://www.rumba.fi/uut241201Pitääkö penkeillä hypätä Martina?
Eivätkö puistonpenkit ole istumista varten.Ei niitä kannata liata hyppäämällä koskaa likaantuvat eikä siellä kukaan niit2091111Kuinka kauan
Olet ollut kaivattuusi ihastunut/rakastunut? Tajusitko tunteesi heti, vai syventyivätkö ne hitaasti?931071- 361067
Maikkarin tentti: Orpo jälleen rauhallinen ja erittäin hyvä, myös Purra oli hyvä
Lindtman ja Kaikkonen oli kohtalaisia, sen sijaan punavihreät Koskela ja Virta olivat taas heikkoja. Ja vastustavat jalk1291043Milli-helenalla ongelmia
Suomen virkavallan kanssa. Eipä ole ihme kun on etsintäkuullutettu jenkkilässäkin. Vähiin käy oleskelupaikat virottarell189940