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

75

    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. Heikki Silvennoinen petti vaimoaan vuosien ajan

      Viiden lapsen isä Heikki kehuu kirjassaan kuinka paljon on pettänyt vaimoaan vuosien varrella.
      Kotimaiset julkkisjuorut
      137
      1906
    2. Taasko se show alkaa

      Koo osottaa taas mieltään
      Ikävä
      27
      1898
    3. Miksi ihmeessä nainen seurustelit kanssani joskus

      Olin ruma silloin ja nykyisin vielä rumempi En voi kuin miettiä että miksi Olitko vain rikki edellisestä suhteesta ja ha
      Ikävä
      23
      1848
    4. Persut nimittivät kummeli-hahmon valtiosihteeriksi!

      Persujen riveistä löytyi taas uusi törkyturpa valtiosihteeriksi! Jutun perusteella järjenjuoksu on kuin sketsihahmolla.
      Perussuomalaiset
      85
      1630
    5. Onko ministeri Juuso epäkelpo ministerin tehtäviensä hoitamiseen?

      Eikö hänellä ole kompetenttia hoitaa sosiaali- ja terveysministetin toimialalle kuuluvia ministerin tehtäviä?
      Perussuomalaiset
      62
      1448
    6. Sakarjan kirjan 6. luku

      Jolla korva on, se kuulkoon. Sain profetian 22.4.2023. Sen sisältö oli seuraava: Suomeen tulee nälänhätä niin, että se
      Profetiat
      20
      1266
    7. Avaa sydämesi mulle

      ❤ ❤❤ Tahdon pelkkää hyvää sulle Sillä ilmeisesti puhumalla Avoimesti välillämme Kaikki taas selviää Kerro kaikki, tahdo
      Ikävä
      38
      1160
    8. Elia tulee vielä

      Johannes Kastaja oli Elia, mutta Jeesus sanoi, että Elia tulee vielä. Malakian kirjan profetia Eliasta toteutuu kokonaan
      Helluntailaisuus
      37
      1153
    9. Söpö lutunen oot

      Kaipaan aina vaan, vaikkakin sitten yksipuolisesti.
      Ikävä
      11
      1148
    10. Nellietä Emmaa ja Amandaa stressaa

      Ukkii minnuu Emmaa ja Amandaa stressaa ihan sikana joten voidaanko me koko kolmikko hypätä ukin kainaloon ja syleilyyn k
      Isovanhempien jutut
      10
      1127
    Aihe