Apa itu Antarmuka di Java dan Bagaimana Menerapkannya?



Artikel ini akan membantu Anda dengan pendekatan komprehensif terhadap Antarmuka Java dan berbagai jenis contoh yang terkait dengan fungsinya.

' Antarmuka adalah tingkat mahir dalam mencapai abstraksi dalam Bahasa Pemrograman Java. Antarmuka Java membantu dalam pengurangan kompleksitas dalam kode dan menyederhanakan keterbacaan . Pada artikel ini, saya akan menjelaskan kepada Anda Java Interface melalui map berikut.

Apa itu Antarmuka Java?

Antarmuka Komputer dikenal sebagai batas yang memisahkan dua atau lebih sistem. Ini bertukar data antara komponen dalam sistem yang dapat memberi sinyal, perintah atau protokol.





java-interface

Abstraksi Java menyediakan fungsionalitas metode tertentu dengan menyembunyikan logika implementasi yang tertulis di dalam metode. Demikian pula, Antarmuka Java juga merupakan Kelas Abstrak yang menyertakan Deklarasi Metode tetapi bukan definisinya. Kelas mengimplementasikan Antarmuka untuk mewarisi metode abstrak. Seiring dengan metode abstrak, file antarmuka bisa juga termasuk konstanta, metode statis, antarmuka bersarang dan metode default.



Persamaan antara Kelas dan Antarmuka.

Antarmuka sangat mirip dengan kelas normal di Java. Antarmuka menyertakan metode abstrak dan metode ini dirancang untuk diterapkan. Proses ini sama dengan pewarisan, yang normal jika menyangkut kelas. Kami akan membahas lebih lanjut tentang kesamaan.

  • Sama seperti kelas, antarmuka juga dapat berisi sejumlah metode yang diperlukan.
  • Mirip dengan kelas, antarmuka juga ditulis dengan a .Jawa file ekstensi.
  • Anehnya, bytecode untuk antarmuka akan muncul di file .kelas mengajukan.
  • Sebuah antarmuka ditampilkan dalam bentuk paket dan bytecode masing-masing ada di direktori yang sesuai dengan nama paket.

Mengapa kita membutuhkan Antarmuka?

Java tidak mendukung Beberapa Warisan, Oleh karena itu, Ini tidak akan mengizinkan kelas untuk memperluas lebih dari satu kelas pada satu instance. Kelas anak tidak dapat mewarisi properti dari beberapa kelas induk pada satu contoh, karena hasilnya Masalah Berlian. Untuk mengatasi masalah ini, Antarmuka diperkenalkan. Mari kita pahami masalah ini melalui sebuah contoh.



array objek di java

Mari kita asumsikan bahwa kita memiliki dua pesawat, satu hanya dapat membawa penumpang, yang satunya saja posisi. Sekarang, kita perlu mewarisi properti dari pesawat kargo dan pesawat penumpang. Java tidak akan mendukung solusi ini karena berakhir di kemenduaan antara dua pesawat.

Tapi, jika Anda bisa membuatnya mungkin dengan membuat Java merasa bahwa itu mewarisi satu bidang dan menerapkan metode yang ada di bidang lain. Ini seperti pesawat komersial yang membawa penumpang dan barang bawaan. Antarmuka seperti membuat bidang yang lebih besar yang dapat melakukan kedua tugas tanpa mengganggu komponen satu sama lain, alih-alih hanya meminjam metode dari Kelas Antarmuka.

// Kode Kelas A.

paketkan beberapa kelas A {void msg () {System.out.println ('Hello')}}

// Kode Kelas B.

paket beberapa kelas B {void msg () {System.out.println ('Selamat Datang')}}

Kode Kelas C.

package multiple class C extends A, B {// Ini tidak akan diterima oleh Java, Ini akan membuat kesalahan dan kode tidak akan dieksekusi. public static void main (String args []) {C obj = baru C () obj.msg ()}}

Keluaran:

Kesalahan. Pendekatan khusus ini memberikan pengecualian. Java tidak mendukung Beberapa warisan. Kesalahan ini dikenal sebagai Masalah Berlian 

Mari kita coba solusi dengan menggunakan sebuah antarmuka, Kelas Anak dapat mengakses metode dari Banyak Induk kelas pada satu contoh.

// Kode Antarmuka

paket MIS solusi antarmuka publik {public void Hello () public void Selamat datang ()}

// Kode Kelas

paket MIS public class classA mengimplementasikan solusi {public void Hello () {java.lang.System.out.println ('Hello world')} public void Welcome () {java.lang.System.out.println ('Selamat datang di Edureka ')} public static void main (String [] args) {classA Edureka = new classA () Edureka.Hello () Edureka.Welcome ()}}

Keluaran:

Halo Dunia
Selamat datang di Edureka

Mendeklarasikan Antarmuka Java: Sintaks

antarmuka interface_name {// deklarasikan bidang konstan // deklarasikan metode () // metode default}

Mari kita lihat contoh pada Java Interface

Contoh Antarmuka Java

Mari kita buat Kalkulator sederhana berdasarkan Antarmuka Java.

// Kode Antarmuka

paket operasi dasar matematika antarmuka publik {public void add () public void sub () public void mul () public void div ()}

// Kode Kelas

paket basicoperations import java.util.Scanner public class student1 mengimplementasikan matematika {@Override public void add () {Scanner kb = new Scanner (System.in) System.out.println ('Masukkan dua nilai integer untuk melakukan penambahan') int a = kb.nextInt () int b = kb.nextInt () int s = a + b System.out.println ('Jumlah' + a + 'dan' + b + 'is' + s)} @Override sub public void () {Scanner kb = new Scanner (System.in) System.out.println ('Masukkan dua nilai integer untuk melakukan substraksi') int a = kb.nextInt () int b = kb.nextInt () int s = ab System.out.println ('Perbedaan' + a + 'dan' + b + 'is' + s)} @Override public void mul () {Scanner kb = new Scanner (System.in) System.out.println ('Enter perkalian dua nilai integer ') int a = kb.nextInt () int b = kb.nextInt () int s = a * b System.out.println (' Product of '+ a +' and '+ b +' is '+ s)} @Override public void div () {Scanner kb = new Scanner (System.in) System.out.println ('Masukkan dua pembagian nilai integer') int a = kb.nextInt () int b = kb.nextInt () int s = a / b System.out.p rintln ('Hasil Bagi dari' + a + 'dan' + b + 'adalah' + s)} public static void main (String [] args) {student1 Edureka1 = new student1 () Edureka1.add () Edureka1.sub () Edureka1. mul () Edureka1.div ()}}

Keluaran:

Lebih jauh lagi, kita akan belajar membuat Java Interface.

Menyusun Antarmuka Java

Interface Nesting adalah proses mendeklarasikan Antarmuka di dalam yang lain Antarmuka yang Ada atau mendeklarasikan Antarmuka di dalam a Kelas. Antarmuka Bersarang juga dikenal sebagai Antarmuka Bagian Dalam.

Antarmuka Bersarang tidak dapat diakses langsung . Oleh karena itu, Nesting diimplementasikan untuk menyelesaikan Namespaces dengan mengelompokkannya dengan yang terkait Antarmuka dan Kelas. Dengan prosedur ini,kita bisa memanggil Antarmuka Bersarang melalui Kelas Luar atau Antarmuka Luar nama diikuti dengan a dot( . ) , dan Nama antarmuka.

Mari kita coba beberapa contoh berdasarkan Interface Nesting. Pertama, mari kita coba membuat sarang a Antarmuka Java di dalam yang lain Antarmuka Java seperti yang ditunjukkan di bawah ini:

// Kode Antarmuka

paket antarmuka publik Nest OuterInterface {void display () antarmuka InnerInterface {void InnerMethod ()}}

// Kode Kelas

paket kelas Nest NestedInterfaceDemo mengimplementasikan OuterInterface.InnerInterface {public void InnerMethod () {int n = 10, t1 = 0, t2 = 1 System.out.print ('First' + n + 'terms:') untuk (int i = 1 i & lt = n ++ i) {System.out.print (t1 + '+') int sum = t1 + t2 t1 = t2 t2 = sum} System.out.println ('nPrinting dari metode Nested InnerInterface ...! n ')} public static void main (String args []) {OuterInterface.InnerInterface obj = new NestedInterfaceDemo () obj.InnerMethod ()}}

Keluaran:

10 istilah pertama: 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + Mencetak dari metode Nested InnerInterface ...!

Sekarang, mari kita coba membuat sarang a Antarmuka Java di dalam a Kelas Java.

sort library c ++

// Kode Antarmuka

paket Nest2 kelas publik EdurekaClass {antarmuka EdurekaInterface {void NestedMethod ()}}

// Kode Kelas

paket Nest2 class NestedInterfaceDemo2 mengimplementasikan EdurekaClass.EdurekaInterface {public void NestedMethod () {String input = 'Edureka' byte [] strAsByteArray = input.getBytes () byte [] result = byte baru [strAsByteArray.length] untuk (int i = 0 i & ltrAsray .length i ++) result [i] = strAsByteArray [strAsByteArray.length-i-1] System.out.println (String baru (hasil))} public static void main (String args []) {EdurekaClass.EdurekaInterface obj = new NestedInterfaceDemo2 () obj.NestedMethod ()}}

Keluaran:

akerudE

Meskipun Antarmuka terlihat hampir mirip dengan Kelas, ada beberapa perbedaan di antara mereka, Mari kita bahas perbedaannya.

Perbedaan antara Kelas Java dan Antarmuka Java

ANTARMUKA KELAS
Mendukung Banyak Warisan Tidak mendukung Multiple Inheritance
Tidak memiliki Anggota Data Termasuk Anggota Data
Tidak memiliki Konstruktor Termasuk Konstruktor
Termasuk Anggota Tidak Lengkap (Anggota Tanda Tangan) Termasuk anggota Lengkap (Abstrak) dan Tidak Lengkap
Tidak memiliki Pengubah Akses Termasuk Pengubah Akses
Antarmuka tidak memiliki Anggota Statis Kelas memiliki semua anggotanya sebagai Statis

Keuntungan dan Kerugian Antarmuka Java

Keuntungan:

  • Antarmuka Java mendukung Warisan Ganda.
  • Antarmuka Java memungkinkan pemrogram untuk memecah pendekatan pemrograman yang kompleks dan menyederhanakan ketergantungan di antara objek.
  • Antarmuka Java membuat file anggota data dan metode dalam aplikasi untuk digabungkan secara longgar.

Kekurangan:

  • Penggunaan Antarmuka Java menurunkan ekstensi kecepatan eksekusi dari aplikasi tersebut.
  • Antarmuka Java dalam aplikasi digunakan secara berulang-ulang atau hampir tidak digunakan sama sekali.

Poin Utama pada Antarmuka Java

  • Tak satu pun dari metode yang dideklarasikan dalam antarmuka memiliki isi yang membuatnya menyediakan abstraksi lengkap.
  • Tidak mungkin untuk membuat objek antarmuka. Oleh karena itu, Instansiasi Antarmuka tidak dimungkinkan.
  • Kelas A dapat mengimplementasikan antarmuka dengan menggunakan implementasi kata kunci. Mari kita lihat ini melalui sebuah contoh.

// Kode Antarmuka

layanan sekarang pelatihan sistem tiket
paket extInterface antarmuka publik extInterface {public void method1 () public void method2 ()}

// Kode Kelas

paket extInterface import kelas java.util.Scanner Edureka mengimplementasikan extInterface {public void method1 () {System.out.println ('implementasi method1') Scanner scanner = new Scanner (System.in) System.out.println ('Masukkan nomor untuk menemukan akar kuadrat di Jawa: ') double square = scanner.nextDouble () double squareRoot = Math.sqrt (square) System.out.printf (' Akar kuadrat angka:% f adalah:% f% n ', square, squareRoot)} public void method2 () {System.out.println ('implementasi method2')} public static void main (String arg []) {extInterface obj = new Edureka () obj.method1 ()}}

Keluaran:

implementasi metode1 Masukkan bilangan untuk menemukan akar kuadrat di Jawa: 16 Akar pangkat dua dari bilangan: 16.0 adalah: 4.0
  • Kelas A dapat mengimplementasikan beberapa warisan pada satu contoh. Mari kita pahami melalui kode berikut.

// Kode Antarmuka 1

paket ExtendInt antarmuka publik Antarmuka1 {public void armstrong ()}

// Kode Antarmuka 2

paket ExtendInt antarmuka publik Antarmuka2 {public void prime ()} // Paket Kode Kelas ExtendInt kelas publik Edureka2 mengimplementasikan Interface1, Interface2 {public void armstrong () {int c = 0, a, temp int n = 153 // input temp = n sementara (n & gt0) {a = n% 10 n = n / 10 c = c + (a * a * a)} if (temp == c) System.out.println ('nomor armstrong') lain System.out.println ('Not armstrong number') System.out.println ('Memperluas ke Antarmuka 1')} public void prime () {int i, m = 0, flag = 0 int n = 3 // masukan m = n / 2 if (n == 0 || n == 1) {System.out.println (n + 'bukan bilangan prima')} else {untuk (i = 2i & lt = mi ++) {if (n% i == 0) {System .out.println (n + 'bukan bilangan prima') flag = 1 break}} if (flag == 0) {System.out.println (n + 'adalah bilangan prima')}} System.out.println ('Memperluas ke Antarmuka 2 ')} public static void main (String args []) {Interface2 obj = new Edureka2 () obj.prime () Interface1 obj1 = new Edureka2 () obj1.armstrong ()}}

Keluaran:

3 adalah bilangan prima Memperluas ke Antarmuka 2 bilangan kuat Memperluas Antarmuka 1
  • Antarmuka Java membutuhkan variabel yang dideklarasikan untuk diinisialisasi pada saat deklarasi.
  • Pengubah Akses untuk antarmuka disetel ke statis publik dan final secara default. Mari kita pahami ini dengan sebuah contoh

// Kode Antarmuka

uji paket antarmuka publik Coba {// public int a = 10 // public static final int a = 10 // static int a = 0 // final int a = 10 // int a = 10}
  • Semua pernyataan di atas adalah benar dan valid di dalam Antarmuka.
  • Antarmuka Java mampu memperluas sejumlah Antarmuka, tetapi tidak pernah dapat menerapkannya.
  • Kelas Java dapat mengimplementasikan sejumlah Antarmuka.
  • Kelas Java tidak dapat mengimplementasikan Antarmuka dengan nama metode yang sama dan tipe kembalian yang berbeda.
  • Jika ada dua atau lebih metode dengan nama metode yang sama, ada di beberapa antarmuka, maka menerapkan metode sekali saja sudah cukup. Mari kita pahami ini dengan contoh praktis.

// Kode Antarmuka

paket antarmuka publik yang sama A {public void display ()} // Kode Antarmuka paket antarmuka publik yang sama B {public void display ()} // Kode kelas paket kelas yang sama implementasi yang sama A, B {public void display () {System.out .println ('menampilkan data')} public static void main (String [] args) {same print = new same () print.display ()}}

Keluaran:

Selamat datang di Edureka E-Learning

Dengan ini, kita sampai pada akhir artikel ini. Saya harap Anda telah memahami pentingnya Antarmuka, Sintaksis, fungsionalitas, Penyusunan Antarmuka, Poin-poin penting Antarmuka Java dan operasi yang dilakukan menggunakannya.

Sekarang Anda telah memahami dasar-dasar Java, lihat oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia. Kursus pelatihan dan sertifikasi Java J2EE dan SOA Edureka dirancang untuk siswa dan profesional yang ingin menjadi Pengembang Java. Kursus ini dirancang untuk memberi Anda permulaan dalam pemrograman Java dan melatih Anda untuk konsep Java inti dan lanjutan bersama dengan berbagai kerangka kerja Java seperti Hibernate & Musim semi .

Ada pertanyaan untuk kami? Sebutkan di bagian komentar di blog 'Java Interface' ini dan kami akan menghubungi Anda kembali secepatnya.