OOP-Periaatteet: Polymorfismi
Pyyhkäise näyttääksesi valikon
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 kaksi samannimistä metodia, jotka voivat tehdä eri asioita. Tätä kutsutaan metodin ylikuormitukseksi.
- Metodin ylikirjoitus:
Olet törmännyt tähän aiheeseen aiemmin, kun ylikirjoitit
toString-metodin tässä luvussa. Käydään se kuitenkin vielä uudelleen läpi.
Tarkastellaan koodiesimerkkiä, joka havainnollistaa, miten metodi voidaan ylikirjoittaa. 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 "aloittaa lentämisen" 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ä joustavan.
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