Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Metodeoverbelastning | Metoder
Java Udvidet
course content

Kursusindhold

Java Udvidet

Java Udvidet

1. Dyb Java-Struktur
2. Metoder
3. String Avanceret
4. Klasser
5. Avancerede Klasser

book
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

Main.java

copy
123456789101112131415161718192021222324252627
// 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

Main.java

copy
12345678910111213141516171819
// 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

Main.java

copy
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
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.

question mark

Hvor mange gange kan vi overbelaste en metode?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 6

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

course content

Kursusindhold

Java Udvidet

Java Udvidet

1. Dyb Java-Struktur
2. Metoder
3. String Avanceret
4. Klasser
5. Avancerede Klasser

book
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

Main.java

copy
123456789101112131415161718192021222324252627
// 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

Main.java

copy
12345678910111213141516171819
// 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

Main.java

copy
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
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.

question mark

Hvor mange gange kan vi overbelaste en metode?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 6
some-alt