Kursinnehåll
Java Fördjupad
Java Fördjupad
Metodöverlagring
Användning av en metod med olika parametrar
Java tillåter oss att skriva olika metoder med samma namn. Dessa metoder kan ha olika returtyper och/eller parametertyper. Detta görs för att vi ska kunna använda dessa metoder med olika typer. Låt oss ta exemplet med en metod för att skriva ut en array:
Vi kan skriva denna metod för att acceptera värden av typen int
, men vad händer om vi behöver skriva ut en array av typen char
? Måste vi då skriva en metod med ett annat namn?
Java tillhandahåller metodöverladdning för detta syfte.
Låt oss titta på ett exempel på att skriva ut data och vända en array från föregående kapitel:
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 överlagrade metoden flipArray
för att acceptera och returnera olika parametrar: int
och char
. Om vi anropar denna metod kan den acceptera och returnera både int
- och char
-typer.
Nu ska vi överlagra metoden för att visa en array på skärmen. Denna metod ska också acceptera och returnera int
- och 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(); }
Här har vi överlagrat metoden printArrayToTheConsole
för att acceptera och returnera int
- och char
-värden.
Nu kombinerar vi de överlagrade metoderna och använder dem i main
-metoden för en array av typen int
och en 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 överlagrat två olika metoder genom att lägga till möjligheten att använda dessa metoder med arrayer av typen char
. Vi har också ändrat namnen på dessa metoder något, eftersom vi nu kan överlasta dem flera gånger för att acceptera och returnera värden av olika typer.
För att verifiera detta skapade vi två olika arrayer, en av typen int
och en annan av typen char
, och skickade sedan dessa arrayer till de överlagrade metoderna, vilket gav korrekta resultat.
För övrigt har du redan stött på överlagrade metoder tidigare.
Till exempel är String
-metoden substring()
överlagrad och kan ha antingen en parameter, int beginIndex
, eller två parametrar, int beginIndex, int endIndex
.
Metodöverlagring är mycket användbart och vanligt förekommande i praktiken.
Tack för dina kommentarer!