Gränssnitt i praktiken
Använd gränssnitt som typer, skicka dem till metoder och byt enkelt implementationer. Öva på små mönster för flexibel kod.
Gränssnitt i praktiken är en gratis lektion i Java Academy på CoddyKit. Detta är lektion 1 av 3. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Java Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Java Academy innehåller totalt 3 lektioner.
Översikt
Gränssnitt i praktiken: behandla egenskaper som typer och håll den anropande koden oberoende av konkreta klasser. Ni kan skicka ett gränssnitt till en metod, lagra det i en lista och ersätta det med en annan implementation när det behövs.
Gränssnitt som parameter
Metoder blir mer flexibla om de tar typen interface som parameter:
- Den anropande koden förblir oförändrad.
- Olika klasser kan implementera samma kontrakt och användas.
- I tester kan ni koppla in en Fake eller Stub och snabbt prova.
Kod: egenskapen Printable
Metoden använder kontraktet Printable, inte den konkreta klassen. Även om implementationerna byts ut förblir den anropande koden oförändrad.
public class Main {
// 1) Define a tiny capability
static interface Printable { void print(); }
// 2) Two implementations
static class TextDoc implements Printable {
public void print() { System.out.println("[TextDoc] Printing text pages"); }
}
static class Photo implements Printable {
public void print() { System.out.println("[Photo] Printing a photo"); }
}
// 3) A method that depends on capability, not class
static void runJob(Printable p) {
p.print(); // caller does not care which class it is
}
public static void main(String[] args) {
runJob(new TextDoc());
runJob(new Photo());
}
}
Gränssnitt som returtyp
Ibland returnerar en factory-metod ett gränssnitt. Den anropande koden ser bara egenskaperna och behöver inte känna till den faktiska klassen. Det minskar beroenden och ökar modulariteten.
Kod: Strategy med Formatter
Samma metod fungerar med olika implementationer av Formatter. Vi kunde ändra beteendet utan att ändra klassen.
public class Main {
// Strategy: different ways to format text
static interface Formatter { String format(String s); }
static class UpperFormatter implements Formatter {
public String format(String s) { return s.toUpperCase(); }
}
static class LowerFormatter implements Formatter {
public String format(String s) { return s.toLowerCase(); }
}
// Uses any Formatter
static String show(String title, Formatter f) {
return title + " -> " + f.format(title);
}
public static void main(String[] args) {
System.out.println(show("Hello", new UpperFormatter()));
System.out.println(show("Hello", new LowerFormatter()));
}
}
Kod: lista med interface
En array eller lista kan ha en interface-typ. Loopen gör samma typ av anrop; varje element kör sin egen implementation.
public class Main {
static interface Task { void run(); }
static class EmailTask implements Task { public void run(){ System.out.println("Send email"); } }
static class ReportTask implements Task { public void run(){ System.out.println("Generate report"); } }
static class CleanupTask implements Task { public void run(){ System.out.println("Clean temp files"); } }
public static void main(String[] args) {
Task[] queue = { new EmailTask(), new ReportTask(), new CleanupTask() };
for (int i = 0; i < queue.length; i = i + 1) {
queue[i].run(); // same call, different behavior
}
}
}
Kontroll av interface-kunskaper
Snabb kontroll: Varför är det användbart att ”programmera mot ett interface”?
Sammanfattning
Sammanfattning: Att använda en interface-typ för parametrar, returvärden och samlingar gör koden flexibel. Implementationer kan bytas ut, och i tester kan mockobjekt användas för snabba försök.
Lär dig Java med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 104
- Lektioner
- 374
Vanliga frågor
Är lektionen ”Gränssnitt i praktiken” gratis?
Ja – hela texten till ”Gränssnitt i praktiken” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Java Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Java Academy innehåller totalt 3 lektioner.
Vad lär jag mig i ”Gränssnitt i praktiken”?
Använd gränssnitt som typer, skicka dem till metoder och byt enkelt implementationer. Öva på små mönster för flexibel kod. Ni övar på Java Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Java Academy?
Du behöver inga förkunskaper. Utbildningen i Java Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 3.
Hur lång tid tar lektionen ”Gränssnitt i praktiken”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Java Academy-lektionen?
Ja. Varje Java Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Gränssnitt i praktiken
- Grunderna i generics (T, inferens)
- Generiska metoder/klasser