Java - Antaramuka

Selamat datang, pemrogram yang baru mula! Hari ini, kita akan menyelam ke atas dunia yang menarik tentang Antaramuka Java. Jangan khawatir jika anda baru mengenali pemrograman; Saya akan membimbing anda melalui konsep ini langkah demi langkah, sama seperti yang saya lakukan untuk pelbagai pelajar selama tahun penyelajaran saya. Jadi, rakam minuman kegemaran anda, dapatkan diri anda yang selesa, dan mari kita melangkah ke atas perjalanan yang menarik ini bersama-sama!

Java - Interfaces

Apa itu Antaramuka Java?

Bayangkan anda sedang membina sebuah robot (tahanlah dengan saya, analogi ini akan memberikan kesan nanti!). Anda tahu anda mahu robot anda melakukan beberapa perkara, seperti bergerak dan untuk membuat bunyi, tetapi anda tidak pasti bagaimana ia akan melakukan perkara ini lagi. Dalam Java, antaramuka adalah seperti rancangan untuk robot anda. Ia mendefinisikan apa yang robot anda harus dapat lakukan, tanpa menentukan bagaimana ia akan melakukan perkara ini.

Dalam istilah pemrograman, antaramuka adalah kontrak yang mendefinisikan satu set method abstrak yang kelas harus melaksanakan. Ia adalah cara untuk mencapai abstraksi dan untuk mendefinisikan tingkah laku umum yang boleh dijejaskan oleh pelbagai kelas.

Pengisytiharan Antaramuka di Java

Mari kita mula dengan contoh yang ringkas. Ini adalah cara kita mengisytiharkan antaramuka:

public interface Robot {
void move();
void makeSound();
}

Dalam contoh ini, kita telah mengisytiharkan antaramuka yang dipanggil Robot dengan dua method abstrak: move() dan makeSound(). Perhatikan bahawa method ini tidak memiliki badan - mereka hanya pengisytiharan. Ia adalah atas kelas yang melaksanakan antaramuka ini untuk menyediakan kod sebenar untuk method ini.

Sifat Antaramuka Java

Sebelum kita teruskan, mari kita ringkaskan beberapa sifat utama antaramuka Java:

  1. Semua method dalam antaramuka adalah secara implisit public dan abstrak.
  2. Antaramuka tidak boleh diinstanciakan secara langsung.
  3. Satu antaramuka boleh memanjangkan pelbagai antaramuka.
  4. Variabel dalam antaramuka adalah secara implisit public, static, dan final.

Melaksanakan Antaramuka di Java

Sekarang kita ada antaramuka Robot kami, mari kita cipta satu kelas yang melaksanakannya. Kita akan menyebut kelas ini AndroidRobot:

public class AndroidRobot implements Robot {
@Override
public void move() {
System.out.println("Robot Android sedang berjalan atas dua kaki.");
}

@Override
public void makeSound() {
System.out.println("Robot Android berkata: 'Hello, human!'");
}
}

Di sini, kita telah menggunakan kata kunci implements untuk menunjukkan kelas AndroidRobot kami adalah melaksanakan antaramuka Robot. Kita then menyediakan pelaksanaan untuk kedua-dua method move() dan makeSound().

Mari kita pecahkan ini:

  1. Catatan @Override adalah pilihan tetapi dianjurkan. Ia memberitahu pengkompiler bahawa kita secara sengaja menggantikan method dari antaramuka.
  2. Kita telah memberikan pelaksanaan khusus untuk move() dan makeSound(). Robot Android kita berjalan atas dua kaki dan boleh untuk mengatakan hello!

Menggunakan Antaramuka dan Kelas Kita

Sekarang, mari kita lihat bagaimana kita boleh menggunakan antaramuka dan kelas baru kita:

public class RobotDemo {
public static void main(String[] args) {
Robot myRobot = new AndroidRobot();
myRobot.move();
myRobot.makeSound();
}
}

Apabila kita menjalankan kod ini, kita akan lihat:

Robot Android sedang berjalan atas dua kaki.
Robot Android berkata: 'Hello, human!'

Perhatikan bagaimana kita mengisytiharkan myRobot sebagai jenis Robot (antaramuka) tetapi diinstanciakan sebagai AndroidRobot. Ini adalah fitur yang kuat bagi antaramuka - kita boleh untuk mengprogram kepada antaramuka, bukan pelaksanaannya. Ini menjadikan kod kita lebih fleksibel dan lebih mudah untuk diubah di masa depan.

Memanjangkan Antaramuka Java

Sama seperti kelas, yang hanya boleh memanjangkan satu kelas induk, antaramuka boleh memanjangkan pelbagai antaramuka. Ini adalah satu cara Java menyediakan bentuk multiple inheritance. Ini adalah contoh:

public interface Flying {
void takeOff();
void land();
}

public interface Swimming {
void dive();
void surface();
}

public interface AmphibiousRobot extends Robot, Flying, Swimming {
void transformMode();
}

Kelas yang melaksanakan AmphibiousRobot perlu menyediakan pelaksanaan untuk semua method dari Robot, Flying, Swimming, dan AmphibiousRobot.

Method Default dalam Antaramuka

Sejak Java 8, antaramuka boleh memiliki method default - method dengan pelaksanaan default. Fitur ini ditambahkan untuk membenarkan penambahan method baru ke atas antaramuka tanpa menghapuskan pelaksanaan yang ada. Ini adalah contoh:

public interface ModernRobot {
void process();

default void boot() {
System.out.println("Memulakan...");
process();
System.out.println("Mulakan selesai!");
}
}

Kelas yang melaksanakan ModernRobot mesti melaksanakan process(), tetapi mereka mendapat boot() secara percuma. Mereka boleh menggantikan boot() jika mereka mahu, tetapi mereka tidak perlu.

Antaramuka Fungsional

Antaramuka fungsional adalah antaramuka yang mengandungi tepat satu method abstrak. Ini adalah penting bagi ungkapan lambda di Java. Ini adalah contoh:

@FunctionalInterface
public interface Calculator {
int calculate(int a, int b);
}

Kita boleh menggunakan antaramuka ini dengan ungkapan lambda seperti ini:

Calculator add = (a, b) -> a + b;
System.out.println(add.calculate(5, 3));  // Output: 8

Kesimpulan

Whew! Kita telah meliputi banyak wilayah hari ini. Dari pengisytiharan antaramuka dasar ke antaramuka fungsional, anda kini memiliki dasar yang kuat dalam antaramuka Java. Ingat, antaramuka adalah alat yang kuat dalam pemrograman Java. Mereka membenarkan kita untuk mendefinisikan tingkah laku umum, mencapai bentuk multiple inheritance, dan menulis kod yang lebih fleksibel dan mudah untuk dipelihara.

Apabila anda teruskan perjalanan Java anda, anda akanjumpa antaramuka muncul di mana-mana. Mereka digunakan secara luas dalam pustaka standard Java dan banyak pola rancangan. Jadi teruskan untuk berlatih, dan anda akan interfacing seperti pro tidak lama lagi!

Selamat coding, master Java masa depan! ??‍??‍?

Credits: Image by storyset