Java Academy · Oppitunti

Rajapinnat käytännössä

Käyttäkää rajapintoja tyyppeinä, välittäkää niitä metodeille ja vaihtakaa toteutuksia helposti. Harjoitelkaa joustavan koodin pieniä rakenteita.

Oppitunti 1/38 vaihetta

Rajapinnat käytännössä on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/3. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 3 oppituntia.

Rajapinnat käytännössä

Rajapinnat käytännössä: käsitelkää ominaisuuksia tyyppeinä ja pitäkää kutsuva koodi riippumattomana konkreettisista luokista. Voitte välittää rajapinnan metodille, tallentaa sen listaan ja korvata sen tarvittaessa toisella toteutuksella.

Rajapinta parametrina

Jos metodit ottavat interface-tyypin parametrina, ne ovat joustavampia:

  • Kutsuva koodi pysyy muuttumattomana.
  • Eri luokat voivat toteuttaa saman sopimuksen, ja niitä voidaan käyttää.
  • Testauksessa voitte liittää mukaan Fake- tai Stub-toteutuksen ja kokeilla nopeasti.

Koodi: Printable-ominaisuus

Metodi käyttää konkreettisen luokan sijaan Printable-sopimusta. Vaikka toteutukset vaihtuvat, kutsuva koodi pysyy samana.

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

Rajapinta paluutyyppinä

Joskus tehdasmetodi palauttaa rajapinnan. Kutsuva koodi näkee vain sen tarjoamat ominaisuudet, eikä sen tarvitse tietää todellista luokkaa. Tämä vähentää riippuvuuksia ja parantaa modulaarisuutta.

Koodi: Strategy ja Formatter

Sama metodi toimii eri Formatter-toteutusten kanssa. Voimme vaihtaa toimintaa muuttamatta luokkaa.

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

Koodi: interface-luettelo

Taulukko tai lista voi olla interface-tyyppiä. Silmukka tekee yhdenmukaisen kutsun; kukin alkio suorittaa oman toteutuksensa.

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

Interfacen harjoitustarkistus

Pikatarkistus: Miksi on hyödyllistä ohjelmoida interfacen kautta?

Kertaus

Kertaus: Interfacen käyttäminen parametrin, paluuarvon tai kokoelman tyyppinä tekee koodista joustavaa. Voitte vaihtaa toteutuksia ja kokeilla nopeasti testien valekohteilla.

Aloita maksutta

Opi Java tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
104
Oppitunnit
374

Usein kysytyt kysymykset

Onko oppitunti ”Rajapinnat käytännössä” ilmainen?

Kyllä – oppitunnin ”Rajapinnat käytännössä” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 3 oppituntia.

Mitä opin oppitunnilla ”Rajapinnat käytännössä”?

Käyttäkää rajapintoja tyyppeinä, välittäkää niitä metodeille ja vaihtakaa toteutuksia helposti. Harjoitelkaa joustavan koodin pieniä rakenteita. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/3.

Kuinka kauan ”Rajapinnat käytännössä”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?

Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Rajapinnat käytännössä
  2. Geneeristen tyyppien perusteet (T, päättely)
  3. Geneeriset metodit ja luokat
← Takaisin: Java Academy