MOOC 53.4 Olion tyyppi määrää kutsutun metodin:

URPO11

TÄMÄ MENEE YLI HILSEEN:
KYSEISEN KAPPALEEN ALUSSA ANNETAAN ESIMERKKI JA SANOTAAN ETTÄ OLION KUTSUTTAVISSA OLEVAT METODIT MÄÄRÄYTYVÄT SEN LUOKAN MUKAAN MIHIN LUOKAAN SEN VIITE ON TALLENNETTU:

Henkilo olli = new Opiskelija("Olli", "Ida Albergintie 1 00400 Helsinki");
olli.opintopisteita(); // EI TOIMI!
olli.opiskele(); // EI TOIMI!
String.out.println(olli); // olli.toString() TOIMII

SITTEN KUITENKIN SAMAN KAPPALEEN LOPUSSA TODETAAN, ETTÄ:
Suoritettava metodi valitaan aina olion todellisen tyypin perusteella riippumatta käytetyn muuttujan tyypistä. Oliot ovat monimuotoisia, eli olioita voi käyttää usean eri muuttujatyypin kautta. Suoritettava metodi liittyy aina olion todelliseen tyyppiin. Tätä monimuotoisuutta kutsutaan polymorfismiksi.
JA ANNETAAN ESIMERKIKSI KOODI JOSSA TULOSTUSMETODI ON KUITENKIN HAETTU OPISKELIJALUOKASTA, VAIKKA VIITTEET ON TALLENNETTU HENKILO JA OBJECT-TYYPPISINÄ:

Henkilo olli = new Opiskelija("Olli", "Ida Albergintie 1 00400 Helsinki");
String.out.println(olli);

Object liisa = new Opiskelija("Liisa", "Väinö Auerin katu 20 00500 Helsinki");
String.out.println(liisa);

TULOSTUU:

Olli
Ida Albergintie 1 00400 Helsinki
opintopisteitä 0
Liisa
Väinö Auerin katu 20 00500 Helsinki
opintopisteitä 0

ELI KUMMINPÄIN SE NYT ON? TODELLISEN LUOKAN PERUSTEELLA VAI SEN LUOKAN MIHIN VIITE ON TALLENNETTU?

7

322

    Vastaukset 7

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • viitteenMukaan

      (Erään käsissäni olevan)Java-kirjan mukaan vain sen luokan ja yliluokkien metodit minkä tyyppisena olio on esitelty voidaan käyttää (poislukien vielä yliluokkien yksityiset metodit, joita ei myöskään voi käyttää).

      Eli jos on esitelty Object oliona, on käytössä vain Object luokan metodit.

      Object luokkaan kuuluu metodi toString. Mielestäni tässä käytetään Object luokan metodia toString, eikä ylikirjoitettu toString metodia.

      Object liisa = new Opiskelija("Liisa", "Väinö Auerin katu 20 00500 Helsinki");
      String.out.println(liisa);

      String.out.println(toString(liisa)); <---- toString(liisa) käyttäen Object luokan toString metodia

      • vai_noinko_se_merkitään

        liisa.toString()
        Object metodilla

        haparointia vielä..


      • internally_Invokes
        vai_noinko_se_merkitään kirjoitti:

        liisa.toString()
        Object metodilla

        haparointia vielä..

        "If you print any object, java compiler internally invokes the toString() method on the object. So overriding the toString() method, returns the desired output, it can be the state of an object etc. depends on your implementation."
        http://www.javatpoint.com/understanding-toString()-method


      • OletkoTestannut

        Object metodilla tulostus pitäisi kait olla samantyylinen kuin tuossa linkissä:
        "Output:Student@1fee6fc
        Student@1eed786"

        Eli jotain ... Object@ab023495


      • ajatustenIterointia

        "Eli jos on esitelty Object oliona, on käytössä vain Object luokan metodit.

        Object luokkaan kuuluu metodi toString. Mielestäni tässä käytetään Object luokan metodia toString, eikä ylikirjoitettu toString metodia.

        Object liisa = new Opiskelija("Liisa", "Väinö Auerin katu 20 00500 Helsinki");
        String.out.println(liisa);

        String.out.println(toString(liisa)); <---- toString(liisa) käyttäen Object luokan toString metodia"

        !!!! Tämä on siis väärin eli jos on ylikirjoittu metodi, käytetään tätä ylikirjoitettua:


        Kuitenkin metodi on olemassa jo yliluokassa, jolloin siitä käytetään ylikirjoitettua aliluokan omaa metodia.
        Jos ei olisi yliluokassa, ei voisi käyttää tälläistä vasta aliluokassa mainittua metodia.
        ?????????????????????

        varoitus: voi sisältää vääriä termejä


      • alkuperäinen

        Eli jos metodi on ylikirjoitettuna aliluokassa, niin sitten palataan sinne kuitenkin. KIITOS, tämä oli selventävä vastaus.


    • Voisi_ehkä_Sanoa

      "OLION KUTSUTTAVISSA OLEVAT METODIT MÄÄRÄYTYVÄT SEN LUOKAN MUKAAN MIHIN LUOKAAN SEN VIITE ON TALLENNETTU:
      "
      Kuitenkin metodien ylikirjoitukset toimivat.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Naiset ymmärtävät ettei talous lähde nousuun

      Miten paljon järjellisempi olento nainen onkaan kuin tilastollisestikin paremmin tienaava mies. Kun kaikkialla puskuroid
      Maailman menoa
      138
      887
    2. En jaksa

      Enää pelleillä ja paljastan J naisen nimen. Se on Jonna ja hän ei koskaan, edes luultavasti ollut täällä. Silti piene
      Ikävä
      44
      657
    3. Minkälainen nainen

      Minkälainen kaipaamasi nainen on luonteeltaan? Kaikki hassun hauskat antava ja helppo on sallittuja, jos poikien on kovi
      Ikävä
      21
      588
    4. Kissa eli kivuissa useita viikkoja

      Ei vienyt lääkäriin vaikka kissa parka maukui ja moni seuraajakin (minäkin) näin että kissa on sairas.
      Tuusniemi
      110
      553
    5. Yksi asia sen esti

      Etten antanut meille mahdollisuutta
      Ikävä
      36
      532
    6. Jos meillä olisi yhteinen koti

      Niin haittaisiko sinua pitää se vähä tavaraisena? Ajattelin tänään että jos joskus asuttaisiin yhdessä ja haluaisit pal
      Ikävä
      50
      525
    7. Okei, eli olet rakastunut

      Hyvä sinä, niin minäkin.
      Ikävä
      57
      509
    8. Tuntuu pahalta meidän molempien puolesta

      Anteeksi, että olen tällainen pelkuri. En vaan usko rakkauteen enää miehen ja naisen välillä omalla kohdalla. Tiedän, et
      Ikävä
      34
      478
    9. Martinan mauton tyyli

      Voi hyvää päivää 🤣 nyt ollaan oltu Muhiksen kanssa Kultareservin avajaisissa suorat housut jalassa ja 500€ korsetti pää
      Kotimaiset julkkisjuorut
      125
      472
    10. Arvaako kukaan?

      "Humalojalla metalliromun keräyspaikalla on kulkenut pitkin kevättä ja kesää joku henkilö, joka on vienyt sieltä kymmeni
      Haapavesi
      24
      445
    Aihe