Kurssisisältö
Java Laajennettu
Java Laajennettu
Metodien Ylikuormitus
Menetelmän käyttäminen eri parametreilla
Java sallii meidän kirjoittaa useita metodeja, joilla on sama nimi. Näillä metodeilla voi olla erilaiset palautustyypit ja/tai parametrityypit. Tämä mahdollistaa sen, että voimme käyttää näitä metodeja eri tyyppien kanssa. Otetaan esimerkiksi metodi taulukon tulostamiseen:
Voimme kirjoittaa tämän metodin hyväksymään int
-tyyppisiä arvoja, mutta entä jos meidän täytyy tulostaa char
-tyyppinen taulukko? Pitääkö meidän kirjoittaa metodi eri nimellä?
Java tarjoaa tähän tarkoitukseen metodin ylikuormituksen.
Tarkastellaan esimerkkiä tietojen tulostamisesta ja taulukon kääntämisestä edellisestä luvusta:
Main.java
// method to reverse an int array static int[] flipArray(int[] array) { // creating a new array to store the reversed elements int[] result = new int[array.length]; int index = 0; // iterating over the input array in reverse order for (int i = array.length - 1; i > 0; i--) { result[index] = array[i]; index++; } // returning the reversed int array return result; } // method to reverse a char array static char[] flipArray(char[] array) { // creating a new array to store the reversed elements char[] result = new char[array.length]; int index = 0; // iterating over the input array in reverse order for (int i = array.length - 1; i >= 0; i--) { result[index] = array[i]; index++; } // returning the reversed char array return result; }
Ylikuormitimme flipArray
-metodin hyväksymään ja palauttamaan erilaisia parametreja: int
ja char
. Kun kutsumme tätä metodia, se voi hyväksyä ja palauttaa sekä int
- että char
-tyyppejä.
Seuraavaksi ylikuormitetaan metodi taulukon näyttämiseksi näytöllä. Tämän metodin tulee myös hyväksyä ja palauttaa int
- ja char
-tyyppejä:
Main.java
// method to print an int array static void printArrayToTheConsole(int[] array) { // iterating through each element of the int array for (int element : array) { System.out.print(element + " "); } // printing a blank line after the array System.out.println(); } // method to print a char array static void printArrayToTheConsole(char[] array) { // iterating through each element of the char array for (char element : array) { System.out.print(element + " "); } // printing a blank line after the array System.out.println(); }
Tässä olemme ylikuormittaneet metodin printArrayToTheConsole
hyväksymään ja palauttamaan int
- ja char
-arvoja.
Seuraavaksi yhdistämme ylikuormitetut metodit ja käytämme niitä main
-metodissa int
-tyyppiselle taulukolle ja char
-tyyppiselle taulukolle:
Main.java
package com.example; public class Main { // main method to run the application public static void main(String[] args) { // do not modify the code below int[] intArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; char[] charArray = {'s', 'b', 'c', 'd', 'e', 'f', 'g'}; printArrayToTheConsole(flipArray(intArray)); printArrayToTheConsole(flipArray(charArray)); } // method to reverse an int array static int[] flipArray(int[] array) { int[] result = new int[array.length]; int index = 0; // iterating over the array in reverse order for (int i = array.length - 1; i > 0; i--) { result[index] = array[i]; index++; } return result; } // method to reverse a char array static char[] flipArray(char[] array) { char[] result = new char[array.length]; int index = 0; // iterating over the array in reverse order for (int i = array.length - 1; i >= 0; i--) { result[index] = array[i]; index++; } return result; } // method to print an int array to the console static void printArrayToTheConsole(int[] array) { // printing each element of the int array for (int element : array) { System.out.print(element + " "); } System.out.println(); } // method to print a char array to the console static void printArrayToTheConsole(char[] array) { // printing each element of the char array for (char element : array) { System.out.print(element + " "); } System.out.println(); } }
Olemme ylikuormittaneet kaksi eri metodia lisäämällä mahdollisuuden käyttää näitä metodeja char
-tyyppisten taulukoiden kanssa. Olemme myös hieman muuttaneet näiden metodien nimiä, sillä nyt voimme ylikuormittaa niitä useita kertoja hyväksymään ja palauttamaan eri tyyppisiä arvoja.
Tämän todentamiseksi loimme kaksi erilaista taulukkoa, toisen int
-tyyppisen ja toisen char
-tyyppisen, ja annoimme nämä taulukot ylikuormitetuille metodeille, jolloin saimme oikeat tulokset.
Olet muuten jo aiemmin kohdannut ylikuormitettuja metodeja.
Esimerkiksi String
-luokan substring()
-metodi on ylikuormitettu ja voi sisältää joko yhden parametrin, int beginIndex
, tai kaksi parametria, int beginIndex, int endIndex
.
Metodien ylikuormitus on erittäin hyödyllistä ja yleisesti käytetty käytännössä.
Kiitos palautteestasi!