Apa perbedaan antara Kelas Abstrak dan Antarmuka di Java?



Artikel ini akan membantu Anda memahami perbedaan utama antara kelas abstrak dan antarmuka di java dengan bantuan program contoh.

Kelas dan antarmuka abstrak adalah dua blok bangunan utamadari . Meskipun keduanya terutama digunakan untuk abstraksi, keduanya sangat berbeda satu sama lain dan tidak dapat digunakan secara bergantian. Pada artikel ini mari kita cari tahu apa perbedaan antara kelas abstrak dan antarmuka di Java.

Topik yang dibahas dalam artikel ini adalah sebagai berikut:





Untuk memahami perbedaan antara kelas abstrak dan antarmuka di , Anda perlu mengetahui apa itu kelas abstrak dan apa itu antarmuka. Jadi, mari kita mulai dengan membahas apa saja itu.

Apa itu Kelas Abstrak di Java?

Dalam bahasa pemrograman apa pun, abstraksi berarti menyembunyikan detail yang tidak relevan dari pengguna untuk fokus hanya pada detail penting untuk meningkatkan efisiensi sehingga mengurangi kompleksitas. Di Jawa, abstraksi dicapai dengan menggunakan kelas abstrak . Kelas abstrak menangkap karakteristik umum subkelas dan mungkin berisi atau tidak mengandung metode abstrak apa pun. Itu tidak bisa dipakai tetapi hanya bisa digunakan sebagai superclass oleh subclassnya. Berikut adalah contoh program yang mendemonstrasikan kelas abstrak:



catatan: Sebuah metode abstrak , adalah metode yang tidak diimplementasikan pada tempatnya dan ditambahkanketidaklengkapan untuk kelas .

paket MyPackage // kelas abstrak kelas abstrak Hewan {String AnimalName = '' Hewan (Nama string) {this.AnimalName = nama} // mendeklarasikan metode non-abstrak // memiliki implementasi default public void BasicInfo (Detail string) {System. out.println (this.AnimalName + '' + details)} // metode abstrak yang akan // diimplementasikan oleh subkelasnya (es) abstract public void habitat () kelas abstrak public void respiration ()} Terestrial extends Animal {// konstruktor Terestrial (nama string) {super (nama)} @Override public void habitat () {System.out.println ('tinggalkan di darat dan')} @Override public void respiration () {System.out.println ('respire through lungs or trachea. ')}} class Aquatic extends Animal {// konstruktor Aquatic (String name) {super (name)} @Override public void habitat () {System.out.println (' Ia meninggalkan air dan ') } @Override public void respiration () {System.out.println ('respire through gills or their skin.')}} Kelas AbstractClassDemo {public static voi d main (String [] args) {// membuat Objek kelas Terestrial // dan menggunakan referensi kelas Hewan. Hewan object1 = new Terrestrial ('Humans') object1.BasicInfo ('adalah makhluk terestrial, mereka') object1.habitat () object1.respiration () System.out.println ('') // membuat Objek kelas lingkaran Hewan object2 = new Aquatic ('Fishes') object2.BasicInfo ('adalah makhluk aqautic, mereka') object2.habitat () object2.respiration ()}}

Keluaran

Manusia adalah makhluk darat, mereka meninggalkan darat dan bernafas melalui paru-paru atau trakea. Ikan adalah makhluk aqautic, mereka meninggalkan air dan bernafas melalui insang atau kulitnya.

Itu Info dasar () adalah metode yang digunakan bersama Terestrial dan Akuatik kelas. Sejak Kelas hewan tidak dapat dimulai, kami membuat objek dari Terestrial dan Akuatik kelas untuk tujuan pemrograman. Selanjutnya, kami memiliki antarmuka.



Antarmuka di Java

Cara lain untuk mencapai abstraksi di Jawa adalah dengan menggunakan antarmuka .Antarmuka adalah kumpulan metode abstrak, tidak ada yang konkret , tidak seperti kelas abstrak. Tapi tidak seperti kelas abstrak, antarmuka menyediakan abstraksi penuh di Java. Ia dapat memiliki metode dan variabel seperti kelas. Namun, metode yang dideklarasikan dalam antarmuka bersifat abstrak secara default.Ini dia mendemonstrasikan kelas abstrak:

paket antarmuka MyPackage Hewan {// metode abstrak void habitat () void respiration ()} kelas TerrestrialA mengimplementasikan Hewan {String AnimalName = '' // konstruktor TerrestrialA (Nama string) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave on land and')} @Override public void respiration () {System.out.println ('respire through lungs or trachea.')}} Class AquaticA mengimplementasikan Hewan {String AnimalName = '' // konstruktor AquaticA (String name) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave in water and')} @Override public void respiration () {System.out.println ('respire through gills or their skin.')}} Kelas JavaInterfaceDemo {public static void main (String [] args) {// membuat Objek kelas Terestrial // dan menggunakan referensi kelas Hewan . Hewan object1 = new TerrestrialA ('Humans') object1.habitat () object1.respiration () System.out.println ('') // membuat Objek kelas lingkaran Hewan object2 = new AquaticA ('Fishes') object2.habitat () object2.respiration ()}}

Keluaran

Manusia pergi dari darat dan bernapas melalui paru-paru atau trakea. Ikan keluar dari air dan bernapas melalui insang atau kulitnya.

Jika Anda tidak memiliki kode umum di antara Anda kelas , lalu Anda dapat membuka antarmuka. Antarmuka lebih seperti cetak biru kelas karena tidak memiliki metode non-abstrak.

Dari konten di atas, Anda mungkin telah memperhatikan perbedaan utama antara kelas abstrak dan antarmuka di . Artinya, tidak seperti kelas abstrak, antarmuka menyediakan lengkap abstraksi di Jawa. Sekarang mari kita lanjutkan dan buat daftar perbedaan lainnya.

apa 6 cara menggunakan kata kunci ini

Kelas Abstrak vs Antarmuka

Tabel di bawah ini mencantumkan perbedaan utama antara kelas abstrak dan antarmuka.

Parameter Kelas Abstrak Antarmuka

Implementasi Metode Default

Itu dapat memiliki implementasi metode default

Antarmuka menyediakan abstraksi murni & tidak dapat diimplementasikan sama sekali

Variabel

Ini mungkin berisi variabel non-final.

Variabel yang dideklarasikan dalam antarmuka secara default adalah final

Kata Kunci Digunakan

Kelas abstrak dapat diperpanjang dengan menggunakan kata kunci “extends

Antarmuka harus diimplementasikan menggunakan ïmplements kata kunci

Pengubah Akses

Bisamemiliki pengubah publik, dilindungi, pribadi, dan default

Metode antarmuka secara default adalah publik. Anda tidak dapat menggunakan pengubah akses lain dengannya

cara menggunakan namespace di c ++

Kecepatan Implementasi

Ini lebih cepat dari antarmuka

Antarmuka agak lebih lambat & membutuhkan tipuan ekstra

Kelas Normal

Itu hanya dapat memperluas satu kelas abstrak

Dapat menerapkan banyak antarmuka

Konstruktor

Kelas abstrak dapat memiliki konstruktor

Antarmuka tidak boleh memiliki konstruktor

Warisan Ganda

Kelas abstrak dapat memperluas kelas lain dan dapat mengimplementasikan beberapa antarmuka Java

Antarmuka hanya dapat memperluas antarmuka Java lain

Nah, sekarang Anda perbedaan utama antara kelas abstrak dan antarmuka di Java. Tapi, bagaimana Anda memutuskan kapan menggunakan yang mana di antara keduanya?

Kapan menggunakan Kelas Abstrak & Kapan menggunakan Antarmuka?

Pertimbangkan untuk menggunakan kelas abstrak dalam kasus berikut:

  • Jika Anda memiliki beberapa kelas terkait yang perlu membagikan file baris kode yang sama
  • Saat Anda ingin mendefinisikan file bidang non-statis atau non-final
  • Saat adametode atau bidangatau membutuhkan pengubah akses selain publik (seperti dilindungi dan pribadi)

Pertimbangkan untuk menggunakan antarmuka dalam kasus berikut:

  • Bila Anda ingin meraihnya abstraksi murni
  • Jika Anda ingin mempekerjakan banyak , yaitu,menerapkan lebih dari satu antarmuka
  • Saat Anda ingin menentukan perilaku tipe data tertentu, tetapi tidak peduli tentang siapa yang mengimplementasikan perilakunya.

Ini membawa kita ke bagian akhir artikel ini. Saya telah membahas salah satu pertanyaan Java yang paling sering ditanyakan dalam Wawancara, yang merupakan perbedaan antara kelas abstrak dan antarmuka di Java.

Pastikan Anda berlatih sebanyak mungkin dan mengembalikan pengalaman Anda.

Lihat oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia. Kami di sini untuk membantu Anda dengan setiap langkah dalam perjalanan Anda, untuk menjadi selain pertanyaan wawancara java ini, kami hadir dengan kurikulum yang dirancang untuk siswa dan profesional yang ingin menjadi Pengembang Java.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar pada 'antarmuka peta java' ini artikel dan kami akan menghubungi Anda kembali sesegera mungkin.