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

280

    Vastaukset

    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. Sanna Marin kysyi hämmästyneenä: Onko Suomessa jäänmurtajia?

      Nettilehden toimittaja kysyi Sanna Marinilta suoraan, että sovittiinko nuo jäänmurtajien kaupat jo 2019, jolloin Marin k
      Maailman menoa
      158
      5085
    2. Voiko normaali ihminen ryhtyä vasemmistolaiseksi?

      Tätä jäin pohdiskelemaan.
      Maailman menoa
      194
      4051
    3. SDP haluaa 40 000 nettomaahanmuuttajaa

      SDP:n Suunnanmuutos-vaihtoehtobudjetissa, käy ilmi, että demarit itse asiassa vaativat räjähdysmäistä ”työperäisen” maah
      Maailman menoa
      140
      3705
    4. Mikä tuota vasemmistolaisista jankkaavaa vaivaa?

      Pahasti on ihon alle, siis korvien väliin, päässeet kummittelemaan. Ei ole terveen ihmisen merkki jankata yhdestä asia
      Maailman menoa
      52
      2986
    5. Orpo: Velkajarrua vastustavaa puoluetta vaikea ajatella hallitukseen

      No Minja Koskelan kommunistipuolue jäi ulos tuosta. Kaikki eduskuntapuolueet vasemmistoliittoa lukuun ottamatta sopivat
      Maailman menoa
      48
      2627
    6. Mitä ajattelit kun näit

      kaivattusi ensimmäisen kerran? xd
      Ikävä
      146
      1987
    7. Nyt meni lopulliset lämmöt.

      Alan käyttäytymään yhtä kylmästi miehiä kohtaan kuin mua kohtaan on käyttäydytty ja vain käytetty viimeiset pari vuotta
      Sinkut
      44
      1737
    8. Hienoa! Eduskunta luopui käteisen käytöstä

      Nyt tuo sama muutos pitää saada myös muuhun yhteiskuntaan. Käteistähän ei tarvitse tänä päivänä enää kuin rikolliset.
      Maailman menoa
      36
      1489
    9. Onko erityinen paikka jossa haluaisit nyt olla

      Onko joku spesiaali lempipaikka missä mieluiten olisit?
      Ikävä
      63
      1424
    10. Orpo loukkaantui fasismiin viittaavasta sanavalinnasta

      Mutta miksi loukkaantui? Orpohan on tehnyt yhteistyötä fasistien kanssa jo vuonna 2019, siis jo neljä vuotta ennen loukk
      Maailman menoa
      26
      1319
    Aihe