OOP-Periaatteet: Polymorfismi
- , opens subtitles settings dialogsubtitles settings
- subtitles off
- , selectedFinnish Captions
- 2x
- 1.5x
- , selected1x
- 0.5x
This is a modal window.
Beginning of dialog window. Escape will cancel and close the window.
End of dialog window.
Polymorfismi
Polymorfismi on toinen OOP-periaate. Olet jo kohdannut polymorfismia, kun ylikuormitit ja ylikirjoitit metodeja. Yleisesti ottaen tämä on polymorfismin ydin. Mutta polymorfismin määritelmä voi olla hieman pelottava:
Todellisuudessa se on kuitenkin paljon yksinkertaisempaa kuin miltä näyttää. Polymorfismi voidaan yksinkertaisesti jakaa kahteen osaan:
Metodien ylikuormitus: mitä opit tässä luvussa, mutta kerrataanpa.
Tarkastellaan esimerkkiä: meidän täytyy kirjoittaa metodi, joka ottaa int
-parametrin ja palauttaa String
, sekä metodi, joka tekee saman mutta long
-parametrilla. Katsotaanpa koodiesimerkkiä:
Main.java
1234567public String doStuff(int parameter) { //... } public String doStuff(long parameter) { //... }
Kuten yllä näet, olemme luoneet 2 samannimistä metodia, jotka voivat tehdä eri asioita. Tämä on metodin ylikuormitusta.
Metodin ylikirjoitus: Olet törmännyt tähän aiheeseen aiemmin, kun ylikirjoitit
toString
-metodin tässä luvussa. Mutta tarkastellaanpa sitä vielä uudelleen.
Tarkastellaan koodiesimerkkiä, joka näyttää, miten voimme ylikirjoittaa metodin. Meillä on luokka nimeltä Airplane
, joka perii Transport
-luokan. Transport
-luokassa on metodi nimeltä move
, joka palauttaa "This transport has started moving".
Tarvitsemme, että lentokone "alkaa lentää" sen sijaan, että se "liikkuisi". Tämän saavuttamiseksi ylikirjoitamme move
-metodin aliluokassa:
Transport.java
Airplane.java
1234567public class Transport { // some fields public String move() { return "This transport has started moving"; } }
Kuten näet, olemme ylikirjoittaneet metodin vanhemmasta luokasta aliluokassa vaaditulla tavalla.
Tällä tavoin polymorfismi täydentää periytymistä erittäin hyvin. Polymorfismin avulla voimme kätevästi ja optimaalisesti laajentaa koodiamme, tehden siitä joustavaa.
1. Miksi tarvitsemme polymorfismia Javassa?
2. Miten polymorfismi täydentää periytymistä?
3. Mitä avainsanaa käytetään metodin ylikuormittamiseen?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme