Kursusindhold
Java Udvidet
Java Udvidet
Metodeoverbelastning
Brug af en metode med forskellige parametre
Java tillader os at skrive forskellige metoder med samme navn. Disse metoder kan have forskellige returtyper og/eller parametretyper. Dette gøres, så vi kan bruge disse metoder med forskellige typer. Lad os tage eksemplet med en metode til at udskrive et array:
Vi kan skrive denne metode til at acceptere værdier af typen int
, men hvad hvis vi skal udskrive et array af typen char
? Skal vi så skrive en metode med et andet navn?
Java tilbyder metodeoverbelastning til dette formål.
Lad os se på et eksempel med udskrivning af data og omvendelse af et array fra det forrige 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 har overbelastet metoden flipArray
til at acceptere og returnere forskellige parametre: int
og char
. Hvis vi kalder denne metode, kan den acceptere og returnere både int
- og char
-typer.
Lad os nu overbelaste metoden til at vise et array på skærmen. Denne metode skal også acceptere 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 at acceptere og returnere int
- og char
-værdier.
Nu kombineres de overbelastede metoder og anvendes i main
-metoden for et array af typen int
og et array af 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 forskellige metoder ved at tilføje muligheden for at bruge disse metoder med arrays af typen char
. Vi har også ændret navnene på disse metoder en smule, da vi nu kan overbelaste dem flere gange til at acceptere og returnere værdier af forskellige typer.
For at verificere dette oprettede vi to forskellige arrays, et af typen int
og et andet af typen char
, og derefter sendte vi disse arrays til de overbelastede metoder, hvilket gav de korrekte resultater.
I øvrigt har du allerede tidligere stødt på overbelastede metoder.
For eksempel er String
-metoden substring()
overbelastet og kan have enten én parameter, int beginIndex
, eller to parametre, int beginIndex, int endIndex
.
Metodeoverbelastning er meget nyttig og almindeligt anvendt i praksis.
Tak for dine kommentarer!