Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele OOP-Periaatteet: Polymorfismi | OOP
Java OOP

book
OOP-Periaatteet: Polymorfismi

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

Main.java

copy
public String doStuff(int parameter) {
//...
}

public String doStuff(long parameter) {
//...
}
1234567
public 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

Transport.java

Airplane.java

Airplane.java

copy
public class Transport {
// some fields

public String move() {
return "This transport has started moving";
}
}
1234567
public 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?

question mark

Miksi tarvitsemme polymorfismia Javassa?

Select the correct answer

question mark

Miten polymorfismi täydentää periytymistä?

Select the correct answer

question mark

Mitä avainsanaa käytetään metodin ylikuormittamiseen?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

We use cookies to make your experience better!
some-alt