Kursinnhold
Java Utvidet
Java Utvidet
Metodeoverlasting
Bruk av en metode med ulike parametere
Java lar oss skrive ulike metoder med samme navn. Disse metodene kan ha forskjellige returtyper og/eller parametertyper. Dette gjøres slik at vi kan bruke disse metodene med ulike typer. La oss ta et eksempel på en metode for å skrive ut et array:
Vi kan skrive denne metoden til å akseptere verdier av typen int
, men hva om vi trenger å skrive ut et array av typen char
? Må vi da skrive en metode med et annet navn?
Java tilbyr metodeoverlasting for dette formålet.
La oss se på et eksempel på utskrift av data og reversering av et array fra forrige kapittel:
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; }
Vi overlastet metoden flipArray
slik at den kan motta og returnere ulike parametere: int
og char
. Hvis vi kaller denne metoden, kan den motta og returnere både int
- og char
-typer.
La oss nå overbelaste metoden for å vise et array på skjermen. Denne metoden skal også kunne motta og returnere int
- og char
-typer:
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(); }
Her har vi overbelastet metoden printArrayToTheConsole
til å akseptere og returnere int
- og char
-verdier.
Nå kombinerer vi de overbelastede metodene og bruker dem i main
-metoden for et array av typen int
og et array av typen char
:
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(); } }
Vi har overbelastet to forskjellige metoder ved å legge til muligheten til å bruke disse metodene med arrayer av typen char
. Vi har også endret navnene på disse metodene litt, siden vi nå kan overbelaste dem flere ganger for å akseptere og returnere verdier av forskjellige typer.
For å bekrefte dette, opprettet vi to forskjellige arrayer, én av typen int
og en annen av typen char
, og sendte deretter disse arrayene til de overbelastede metodene, og fikk de riktige resultatene.
Forresten, du har allerede støtt på overbelastede metoder tidligere.
For eksempel er String
-metoden substring()
overbelastet og kan ha enten én parameter, int beginIndex
, eller to parametere, int beginIndex, int endIndex
.
Metodeoverbelastning er svært nyttig og vanlig i praksis.
Takk for tilbakemeldingene dine!