Javan ylikuormitusmenetelmän edut ja haitat

Ylikuormitetut menetelmät ovat samassa luokassa olevia menetelmiä, joilla on sama nimi, mutta jotka hyväksyvät argumenteiksi erilaisia ​​muuttujatyyppejä. Luokassa voi esimerkiksi olla kaksi erilaista "lisää"-menetelmää: toinen, joka hyväksyy kaksi kaksoisarvoa, "add (double a, double b)" ja toinen, joka hyväksyy kaksi kokonaislukuarvot, "add (int a, int b)." Tietokone päättää automaattisesti, mitä menetelmää kutsua ajon aikana, perustuen muuttujatyyppeihin, jotka välitetään menetelmä.

Joustavuus

Ylikuormitetut menetelmät antavat ohjelmoijille joustavuuden kutsua samanlaista menetelmää erityyppisille tiedoille. Jos työskentelet esimerkiksi matematiikkaohjelman parissa, voit käyttää ylikuormitusta luodaksesi useita "kertoja" luokkia, joista jokainen kertoo eri määrän argumenttityyppejä: yksinkertaisin "kerto (int a, int b)" kertoo kaksi kokonaisluvut; monimutkaisempi menetelmä "kertoja (kaksinkertainen a, int b, int c)" kertoo yhden tuplauksen kahdella kokonaisluvulla -- voisit sitten kutsu "multiply" mille tahansa muuttujayhdistelmälle, jolle loit ylikuormitetun menetelmän, ja saat oikean tuloksen.

Päivän video

Rakentajat

Ylikuormitusta käytetään myös rakentajissa uusien objektien luomiseen eri tietomäärillä. Voit esimerkiksi käyttää ylikuormitusta luodaksesi "House"-objektille kolme erilaista rakentajaa talon numeron, kadun nimen ja värimuuttujien kanssa. Yksinkertaisin rakentaja "House()" ei ota argumentteja ja luo talon oletusmuuttujilla tai tyhjillä muuttujilla. Monimutkaisempi rakentaja "House (int houseNumber, String streetName)" luo talon, jolla on määritetty talonumero ja kadunnimi, mutta oletus- tai tyhjä väri. Monimutkaisin rakentaja "House (int houseNumber, String streetName, String color)" luo talon kaikilla määritetyillä tiedoilla jättämättä mitään oletukseksi. Voit sitten luoda taloobjektin tällä hetkellä saatavilla olevien tietojen perusteella jättäen tiedot tyhjiksi tai oletusarvoiksi.

Epäselvät viittaukset

Ylikuormitettujen menetelmien on käytettävä erilaisia ​​​​lukuja tai erityyppisiä argumentteja epäselvyyden välttämiseksi. Jos luot samaan luokkaan kaksi menetelmää, joilla on sama nimi ja hyväksyt kaksi kokonaislukua argumenteiksi, Java-kääntäjä ei pysty erottamaan näitä kahta toisistaan, vaikka syöttömuuttujilla olisi eri nimet. Esimerkiksi menetelmä "add (int a, int b)" ei voi olla samassa luokassa kuin metodi "add (int c, int d)."

Palautustyypit

Sinun on määritettävä palautustyyppi jokaiselle ylikuormitetulle menetelmälle. Menetelmillä voi olla erilaisia ​​palautustyyppejä – esimerkiksi "add (int a, int b)" voi palauttaa kokonaisluvun, kun taas "add (double a, double b)" palauttaa tuplauksen. Java ei kuitenkaan voi erottaa kahta eri menetelmää niiden palautustyypin perusteella. Siksi "int multiply (double a, double b)" ei voi olla samassa luokassa kuin "double multiply (double a, double b)."