Osaako joku sanoa, miten voidaan viitata yliluokan taulukko-oliosta aliluokan metodiin?
Viittaaminen aliluokan metodiin
6
761
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
- 1017463
Siekkilässä ajettu ihmisten yli- mitä tapahtui? Länsi-Savo ei ole uutisoinut asiata
Manneja, vaiko matuja?835092- 794889
- 1324288
Alavuden sairaala
Säästääkö Alavuden sairaala sähkössä. Kävin Sunnuntaina vast. otolla. Odotushuone ja käytävä jolla lääkäri otti vastaan103068- 522709
- 432632
- 532267
Törkeää toimintaa
Todella törkeitä kaheleita niitä on Ylivieskassakin. https://www.ess.fi/uutissuomalainen/8570818112243Suudeltiin unessa viime yönä
Oltiin jossain rannalla jonkun avolava auton lavalla, jossa oli patja ja peitto. Uni päättyi, kun kömmit viereeni tähtit211860