Rajapinnat käytännössä
Käyttäkää rajapintoja tyyppeinä, välittäkää niitä metodeille ja vaihtakaa toteutuksia helposti. Harjoitelkaa joustavan koodin pieniä rakenteita.
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.
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
- Rajapinnat käytännössä
- Geneeristen tyyppien perusteet (T, päättely)
- Geneeriset metodit ja luokat