OOP-periaatteet: Polymorfismi
Polymorfismi
Polymorfismi on yksi OOP:n periaatteista. Olet jo kohdannut polymorfismia, kun olet ylikuormittanut ja ylittänyt 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ä kappaleessa, 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ämä on metodin ylikuormitus.
- Metodin ylikirjoitus:
Olet törmännyt tähän aiheeseen aiemmin, kun ylikirjoitit
toString-metodin tässä luvussa. Mutta käydään se vielä kerran läpi.
Tarkastellaan koodiesimerkkiä, joka näyttää, 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 "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 huomaat, olemme ylikirjoittaneet metodin lapsiluokassa vanhemmasta luokasta 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
Can you explain the difference between method overloading and method overriding?
Can you provide more examples of polymorphism in Java?
Why is polymorphism important in object-oriented programming?
Awesome!
Completion rate improved to 4.76
OOP-periaatteet: Polymorfismi
Pyyhkäise näyttääksesi valikon
Polymorfismi
Polymorfismi on yksi OOP:n periaatteista. Olet jo kohdannut polymorfismia, kun olet ylikuormittanut ja ylittänyt 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ä kappaleessa, 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ämä on metodin ylikuormitus.
- Metodin ylikirjoitus:
Olet törmännyt tähän aiheeseen aiemmin, kun ylikirjoitit
toString-metodin tässä luvussa. Mutta käydään se vielä kerran läpi.
Tarkastellaan koodiesimerkkiä, joka näyttää, 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 "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 huomaat, olemme ylikirjoittaneet metodin lapsiluokassa vanhemmasta luokasta 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!