Java Academy · Lektion

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.

Lektion 1 av 38 steg

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.

Gratis att börja

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

  1. Gränssnitt i praktiken
  2. Grunderna i generics (T, inferens)
  3. Generiska metoder/klasser
← Tillbaka till Java Academy