Java Academy · leksjon

Grensesnitt i praksis

Bruk grensesnitt som typer, send dem til metoder og bytt enkelt mellom implementasjoner. Øv på små mønstre for fleksibel kode.

Leksjon 1 av 38 trinn

Grensesnitt i praksis er en gratis leksjon i Java Academy på CoddyKit. Dette er leksjon 1 av 3. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Java Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Java Academy inneholder totalt 3 leksjoner.

Oversikt

Grensesnitt i praksis: Behandle egenskaper som typer, og hold kallende kode uavhengig av konkrete klasser. Du kan sende et grensesnitt til en metode, lagre det i en liste og erstatte det med en annen implementasjon ved behov.

Grensesnitt som parameter

Metoder blir mer fleksible når de tar grensesnittypen interface som parameter:

  • Koden som kaller metoden, forblir uendret.
  • Forskjellige klasser kan brukes når de implementerer den samme kontrakten.
  • I tester kan du sette inn en Fake eller Stub og prøve raskt.

Kode: egenskapen Printable

Metoden bruker kontrakten Printable, ikke den konkrete klassen. Derfor forblir den kallende koden uendret selv om implementasjonene byttes ut.

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());
  }
}

Grensesnitt som returtype

Noen ganger returnerer en factory-metode et grensesnitt. Den kallende koden ser bare egenskapene og trenger ikke å kjenne den faktiske klassen. Dette reduserer avhengigheter og øker modulariteten.

Kode: Strategy med Formatter

Den samme metoden fungerer med forskjellige Formatter-implementasjoner. Vi kunne endre atferden uten å endre 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()));
  }
}

Kode: Liste med interface

En array eller liste kan være av en interface-type. Løkken gjør ett kall av samme type; hvert element kjører sin egen implementasjon.

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
    }
  }
}

Sjekk av interface-praksis

Rask sjekk: Hvorfor er det nyttig å «programmere mot et interface»?

Oppsummering

Oppsummering: Når interface-typen brukes som parameter, returtype eller samling, blir koden fleksibel. Implementasjoner kan byttes ut, og i tester kan man raskt prøve med mock-objekter.

Gratis å komme i gang

Lær deg Java med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
104
Leksjoner
374

Ofte stilte spørsmål

Er leksjonen «Grensesnitt i praksis» gratis?

Ja – hele teksten i «Grensesnitt i praksis» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Java Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Java Academy inneholder totalt 3 leksjoner.

Hva lærer jeg i «Grensesnitt i praksis»?

Bruk grensesnitt som typer, send dem til metoder og bytt enkelt mellom implementasjoner. Øv på små mønstre for fleksibel kode. Du øver på Java Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Java Academy?

Ingen tidligere erfaring er nødvendig. Java Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 3.

Hvor lang tid tar leksjonen «Grensesnitt i praksis»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Java Academy-leksjonen?

Ja. Alle Java Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Grensesnitt i praksis
  2. Grunnleggende om generiske typer (T, inferens)
  3. Generiske metoder og klasser
← Tilbake til Java Academy