Perbedaan Antara Kelas Abstrak dan Antarmuka di Java

Perbedaan Kunci Antara Kelas Abstrak dan Antarmuka di Java

  • Di Antarmuka, sebuah kelas dapat mengimplementasikan banyak antarmuka, sedangkan kelas tersebut hanya dapat mewarisi satu Kelas Abstrak.
  • Di Antarmuka tidak memiliki pengubah akses. Segala sesuatu yang didefinisikan di dalam Antarmuka diasumsikan memiliki pengubah publik, sedangkan Kelas Abstrak dapat memiliki pengubah akses.
  • Antarmuka tidak boleh berisi bidang data, sedangkan kelas abstrak dapat memiliki bidang data.
  • Antarmuka membantu menentukan kemampuan periferal kelas, sedangkan kelas abstrak mendefinisikan identitas kelas.

Antarmuka vs Kelas Abstrak di Java

Apa itu Kelas Abstrak?

Kelas yang memiliki kata kunci abstrak dalam deklarasinya disebut kelas abstrak. Kelas abstrak harus memiliki nol atau lebih metode abstrak. Yaitu, metode tanpa isi. Kelas abstrak dapat memiliki beberapa metode konkret. Kelas abstrak memungkinkan Anda membuat cetak biru untuk kelas konkret. Namun, kelas yang mewarisi harus mengimplementasikan metode abstrak. Kelas abstrak tidak dapat dibuat contohnya.

Alasan Penting Menggunakan Antarmuka

  • Antarmuka digunakan untuk mencapai abstraksi.
  • Dirancang untuk mendukung resolusi metode dinamis pada waktu proses
  • Ini membantu Anda mencapai kopling yang longgar.
  • Memungkinkan Anda memisahkan definisi metode dari hierarki warisan

Alasan Penting Menggunakan Kelas Abstrak

  • Kelas abstrak menawarkan fungsionalitas default untuk subkelas.
  • Menyediakan templat untuk kelas spesifik di masa depan
  • Membantu Anda menentukan antarmuka umum untuk subkelasnya
  • Kelas abstrak memungkinkan penggunaan kembali kode.

Apa itu Antarmuka?

Antarmuka adalah cetak biru yang dapat digunakan untuk mengimplementasikan kelas. Antarmuka tidak berisi metode konkret (metode yang memiliki kode). Semua metode antarmuka adalah metode abstrak. Antarmuka tidak dapat dibuat contohnya. Namun, kelas yang mengimplementasikan antarmuka dapat dibuat contohnya. Antarmuka tidak pernah berisi variabel contoh, tetapi dapat berisi variabel publik statis final (yaitu, variabel kelas konstan)

Perbedaan antara Antarmuka dan Kelas Abstrak di Java

Kelas abstrak memungkinkan Anda membuat fungsionalitas yang dapat diimplementasikan atau ditimpa oleh subkelas, sedangkan antarmuka hanya mengizinkan Anda menyatakan fungsionalitas tetapi tidak untuk mengimplementasikannya. Sebuah kelas hanya dapat memperluas satu kelas abstrak sementara sebuah kelas dapat mengimplementasikan banyak antarmuka.

Parameters Antarmuka Kelas abstrak
Kecepatan Lambat Cepat
Beberapa Warisan Menerapkan beberapa Antarmuka Hanya satu kelas abstrak
Structure Metode abstrak Metode abstrak & konkrit
Kapan harus digunakan Peningkatan di masa depan Untuk menghindari kemerdekaan
Warisan/ Implementasi Sebuah Kelas dapat mengimplementasikan banyak antarmuka Kelas hanya dapat mewarisi satu Kelas Abstrak
Implementasi Default Saat menambahkan hal-hal baru ke antarmuka, menemukan semua pelaksana dan mengimplementasikan hal-hal yang baru ditentukan merupakan mimpi buruk. Dalam kasus Kelas Abstrak, Anda dapat memanfaatkan implementasi default.
Akses Pengubah Antarmuka tidak memiliki pengubah akses. Segala sesuatu 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 serupa memiliki perilaku yang sama.
Bidang data antarmuka tidak dapat berisi bidang data. kelas dapat memiliki bidang data.
Default Warisan Berganda Sebuah kelas dapat mengimplementasikan banyak antarmuka. Sebuah kelas hanya mewarisi satu kelas abstrak.
Organisasi Antarmuka bersifat abstrak sehingga tidak dapat memberikan kode apa pun. Kelas abstrak dapat memberikan kode default lengkap yang harus diganti.
Penggunaan pengubah Akses Anda tidak dapat menggunakan pengubah akses untuk metode, properti, dll. Anda dapat menggunakan kelas abstrak yang berisi pengubah akses.
penggunaan Antarmuka membantu menentukan kemampuan periferal suatu kelas. Kelas abstrak mendefinisikan identitas kelas.
Bidang yang ditentukan Tidak ada bidang yang dapat ditentukan Kelas abstrak memungkinkan Anda mendefinisikan bidang dan konstanta
Warisan Sebuah antarmuka dapat mewarisi banyak antarmuka tetapi tidak dapat mewarisi satu kelas. Kelas abstrak dapat mewarisi satu kelas dan beberapa antarmuka.
Konstruktor atau destruktor Antarmuka tidak dapat mendeklarasikan konstruktor atau destruktor. Kelas abstrak dapat mendeklarasikan konstruktor dan destruktor.
Batasan Ekstensi Itu 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, bersifat opsional untuk mendeklarasikan metode sebagai abstrak. Di kelas abstrak, kata kunci abstract wajib digunakan untuk mendeklarasikan suatu metode sebagai abstrak.
Jenis kelas Sebuah antarmuka hanya dapat memiliki metode abstrak publik. Kelas abstrak memiliki metode abstrak yang dilindungi dan publik.

Contoh kode untuk Antarmuka dan Kelas Abstrak di Java

Berikut ini adalah contoh kode untuk membuat antarmuka dan kelas abstrak di Java

Sintaks Antarmuka

interface name{
//methods
}

Java Contoh Antarmuka:

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