Antarmuka vs Kelas Abstrak di Jawa:Apa Perbedaannya?
Apa itu Antarmuka?
Antarmuka adalah cetak biru yang dapat digunakan untuk mengimplementasikan kelas. Antarmuka tidak mengandung metode konkret (metode yang memiliki kode). Semua metode antarmuka adalah metode abstrak.
Antarmuka tidak dapat dipakai. Namun, kelas yang mengimplementasikan antarmuka dapat dipakai. Antarmuka tidak pernah berisi variabel instan tetapi, mereka dapat berisi variabel final statis publik (yaitu, variabel kelas konstan)
Apa itu Kelas Abstrak?
Kelas yang memiliki kata kunci abstrak dalam deklarasinya disebut kelas abstrak. Kelas abstrak harus memiliki setidaknya satu metode abstrak. , yaitu, metode tanpa badan. Ini dapat memiliki beberapa metode konkret.
Kelas abstrak memungkinkan Anda membuat cetak biru untuk kelas konkret. Tetapi kelas yang mewarisi harus mengimplementasikan metode abstrak.
Kelas abstrak tidak dapat dibuat instance-nya.
Alasan Penting Untuk Menggunakan Antarmuka
- Antarmuka digunakan untuk mencapai abstraksi.
- Dirancang untuk mendukung resolusi metode dinamis pada waktu proses
- Ini membantu Anda mencapai sambungan longgar.
- Memungkinkan Anda untuk memisahkan definisi metode dari hierarki pewarisan
Alasan Penting Untuk Menggunakan Kelas Abstrak
- Kelas abstrak menawarkan fungsionalitas default untuk subkelas.
- Menyediakan template untuk kelas khusus di masa mendatang
- Membantu Anda mendefinisikan antarmuka umum untuk subkelasnya
- Kelas abstrak memungkinkan penggunaan kembali kode.
Antarmuka Vs. Kelas Abstrak
Kelas abstrak memungkinkan Anda untuk membuat fungsionalitas yang dapat diimplementasikan atau ditimpa oleh subkelas sedangkan antarmuka hanya mengizinkan Anda untuk menyatakan fungsionalitas tetapi tidak mengimplementasikannya. Kelas hanya dapat memperluas satu kelas abstrak sementara kelas dapat mengimplementasikan beberapa antarmuka.
Parameter | Antarmuka | Kelas abstrak |
Kecepatan | Lambat | Cepat |
Banyak Warisan | Menerapkan beberapa Antarmuka | Hanya satu kelas abstrak |
Struktur | Metode abstrak | Metode abstrak &konkret |
Kapan harus digunakan | Peningkatan di masa mendatang | Untuk menghindari kemerdekaan |
Warisan/ Implementasi | Sebuah Kelas dapat mengimplementasikan banyak antarmuka | Kelas hanya dapat mewarisi satu Kelas Abstrak |
Penerapan Default | Sambil menambahkan hal-hal baru ke antarmuka, adalah mimpi buruk untuk menemukan semua pelaksana dan mengimplementasikan hal-hal yang baru didefinisikan. | Dalam hal Kelas Abstrak, Anda dapat memanfaatkan implementasi default. |
Pengubah Akses | Antarmuka tidak memiliki pengubah akses. Semua yang didefinisikan di dalam antarmuka diasumsikan sebagai pengubah publik. | Kelas Abstrak dapat memiliki pengubah akses. |
Kapan harus digunakan | Lebih baik menggunakan antarmuka ketika berbagai implementasi hanya berbagi tanda tangan metode. Hirarki polimorfik tipe nilai. | Ini harus digunakan ketika berbagai implementasi dari jenis yang sama memiliki perilaku yang sama. |
Bidang data | antarmuka tidak boleh berisi bidang data. | kelas dapat memiliki bidang data. |
Default Warisan Banyak | Sebuah kelas dapat mengimplementasikan banyak antarmuka. | Sebuah kelas hanya mewarisi satu kelas abstrak. |
Implementasi | Antarmuka bersifat abstrak sehingga tidak dapat memberikan kode apa pun. | Sebuah kelas abstrak dapat memberikan kode default lengkap yang harus diganti. |
Penggunaan pengubah Access | Anda tidak dapat menggunakan pengubah akses untuk metode, properti, dll. | Anda dapat menggunakan kelas abstrak yang berisi pengubah akses. |
Penggunaan | Antarmuka membantu mendefinisikan kemampuan periferal suatu kelas. | Sebuah kelas abstrak mendefinisikan identitas sebuah kelas. |
Bidang yang ditentukan | Tidak ada bidang yang dapat ditentukan | Kelas abstrak memungkinkan Anda untuk mendefinisikan bidang dan konstanta |
Warisan | Sebuah antarmuka dapat mewarisi beberapa antarmuka tetapi tidak dapat mewarisi sebuah kelas. | Sebuah kelas abstrak dapat mewarisi satu kelas dan beberapa antarmuka. |
Konstruktor atau perusak | Antarmuka tidak dapat mendeklarasikan konstruktor atau destruktor. | Sebuah kelas abstrak dapat mendeklarasikan konstruktor dan destruktor. |
Batas Ekstensi | Ini dapat memperluas sejumlah antarmuka. | Itu hanya dapat memperluas satu kelas atau satu kelas abstrak pada satu waktu. |
Kata kunci abstrak | Dalam kata kunci antarmuka abstrak, adalah opsional untuk mendeklarasikan metode sebagai abstrak. | Dalam kelas abstrak, kata kunci abstrak wajib untuk mendeklarasikan metode sebagai abstrak. |
Jenis kelas | Sebuah antarmuka hanya dapat memiliki metode abstrak publik. | Sebuah kelas abstrak memiliki metode abstrak yang dilindungi dan publik. |
Contoh kode Antarmuka dan Kelas Abstrak di Java
Berikut ini adalah contoh kode untuk membuat antarmuka dan kelas abstrak di Java
Sintaks Antarmuka
interface name{
//methods
}
Contoh Antarmuka Java:
interface Pet {
public void test();
}
class Dog implements Pet {
public void test() {
System.out.println("Interface Method Implemented");
}
public static void main(String args[]) {
Pet p = new Dog();
p.test();
}
}
Sintaks Kelas Abstrak
abstract class name{
// code
}
Contoh kelas abstrak:
abstract class Shape {
int b = 20;
abstract public void calculateArea();
}
public class Rectangle extends Shape {
public static void main(String args[]) {
Rectangle obj = new Rectangle();
obj.b = 200;
obj.calculateArea();
}
public void calculateArea() {
System.out.println("Area is " + (b * b));
}
}