Apakah Antaramuka di Java dan Bagaimana Melaksanakannya?



Artikel ini akan membantu anda dengan pendekatan komprehensif terhadap Java Interface dan pelbagai jenis contoh yang berkaitan dengan fungsinya.

' Antara muka adalah tahap lanjutan untuk mencapai abstraksi dalam Bahasa Pengaturcaraan Java. Antara muka Java membantu dalam pengurangan kerumitan dalam kod dan mempermudah kebolehbacaan . Dalam artikel ini, saya akan menerangkan kepada anda Java Interface melalui soket berikut.

Apa itu Antara Muka Java?

Antara Muka Komputer dikenali sebagai sempadan yang memisahkan dua atau lebih sistem. Ini bertukar data antara komponen dalam sistem yang dapat memberi isyarat, perintah atau protokol.





java-interface

Java Abstraction menyediakan fungsi kaedah tertentu dengan menyembunyikan logik pelaksanaan yang ditulis di dalam kaedah tersebut. Begitu juga, Java Interface juga merupakan Kelas Abstrak yang merangkumi Deklarasi Kaedah tetapi bukan definisinya. Kelas melaksanakan antara muka untuk mewarisi kaedah abstrak. Bersama dengan kaedah abstrak, sebuah antara muka boleh juga merangkumi pemalar, kaedah statik, antara muka bersarang dan kaedah lalai.



Persamaan antara Kelas dan Antara Muka.

Antaramuka sama dengan kelas biasa di Java. Antaramuka merangkumi kaedah abstrak dan kaedah ini dirancang untuk dilaksanakan. Proses ini sama dengan pewarisan, yang normal ketika datang ke kelas. Kami akan membincangkan lebih lanjut mengenai persamaan.

  • Sama seperti kelas, antara muka juga boleh memuat seberapa banyak kaedah yang diperlukan.
  • Sama seperti kelas, antara muka juga ditulis dengan a .java fail sambungan.
  • Anehnya, bytecode untuk antara muka akan muncul di a .kelas fail.
  • Antaramuka ditunjukkan dalam bentuk pakej dan kod byte masing-masing berada dalam direktori yang sepadan dengan nama pakej.

Mengapa kita memerlukan Antaramuka?

Java tidak menyokong Pelbagai Warisan, Oleh kerana itu, Kelas tidak akan meluaskan lebih daripada satu kelas pada satu ketika. Kelas kanak-kanak tidak dapat mewarisi harta tanah pelbagai kelas induk pada satu masa, kerana ia menghasilkan Masalah Berlian. Untuk mengatasi masalah ini, Antara muka diperkenalkan. Mari kita fahami masalah ini melalui contoh.



Mari kita anggap kita mempunyai dua pesawat, satu hanya boleh membawa penumpang, yang lain sahaja kedudukan. Sekarang, kita perlu mewarisi sifat kedua-dua pesawat kargo dan pesawat penumpang. Java tidak akan menyokong penyelesaian ini kerana ia berakhir kekaburan antara dua satah.

Tetapi, jika anda dapat membuatnya dengan membuat Java merasa bahwa ia mewarisi satu pesawat dan melaksanakan kaedah yang terdapat di satah lain. Ia seperti pesawat komersial yang membawa penumpang dan barang-barang kargo. Interface seperti membuat pesawat yang lebih besar yang dapat melakukan kedua tugas tanpa mengganggu komponen satu sama lain, sebaliknya hanya meminjam kaedah dari Kelas antara muka.

// Kod Kelas A.

pakej pelbagai kelas A {void msg () {System.out.println ('Hello')}}

// Kod Kelas B

apakah ruang nama di c ++
pakej pelbagai kelas B {void msg () {System.out.println ('Welcome')}}

Kod Kelas C

pakej beberapa kelas C meluas A, B {// Ini tidak akan diterima oleh Java, Ini akan melemparkan kesalahan dan kod tidak akan dilaksanakan. utama kekosongan statik awam (String args []) {C obj = baru C () obj.msg ()}}

Pengeluaran:

Ralat. Pendekatan khusus ini memberikan pengecualian. Java tidak menyokong Warisan berganda. Kesalahan ini dikenali sebagai Masalah Berlian 

Mari kita mencuba penyelesaian dengan menggunakan antara muka, Kelas Kanak-kanak boleh mengakses kaedah dari Ibu Bapa Pelbagai kelas pada satu kejadian.

// Kod antara muka

kod senarai terpaut di c
pakej penyelesaian antara muka awam MIS {public void Hello () public void Welcome ()}

// Kod Kelas

pakej MIS kelas awam kelasA melaksanakan penyelesaian {public void Hello () {java.lang.System.out.println ('Hello world')} public void Welcome () {java.lang.System.out.println ('Selamat Datang ke Edureka ')} public static void main (String [] args) {classA Edureka = new classA () Edureka.Hello () Edureka.Welcome ()}}

Pengeluaran:

Hai dunia
Selamat datang ke Edureka

Menyatakan Antara Muka Java: Sintaks

antara muka antaramuka_nama {// menyatakan medan malar // menyatakan kaedah () // kaedah lalai}

Mari kita teliti contoh di Java Interface

Contoh Antara Muka Java

Mari kita buat Kalkulator ringkas berdasarkan Java Interface.

// Kod antara muka

pakej asas operasi awam matematik awam {public void add () public void sub () public void mul () public void div ()}

// Kod Kelas

pakej operasi asas import java.util.Scanner pelajar kelas awam1 melaksanakan matematik {@ Override public void add () {Scanner kb = new Scanner (System.in) System.out.println ('Masukkan mana-mana dua nilai integer untuk melakukan penambahan') int a = kb.nextInt () int b = kb.nextInt () int s = a + b System.out.println ('Jumlah dari' + a + 'dan' + b + 'adalah' + s)} @ Override sub void awam () {Scanner kb = new Scanner (System.in) System.out.println ('Masukkan mana-mana dua nilai integer untuk melakukan penolakan') int a = kb.nextInt () int b = kb.nextInt () int s = ab System.out.println ('Perbezaan' + a + 'dan' + b + 'adalah' + s)} @ Override public void mul () {Scanner kb = new Scanner (System.in) System.out.println ('Enter sebarang dua darab nilai integer ') int a = kb.nextInt () int b = kb.nextInt () int s = a * b System.out.println (' Product of '+ a +' dan '+ b +' is '+ s)} @ Override public void div () {Scanner kb = new Scanner (System.in) System.out.println ('Masukkan mana-mana dua pembahagian nilai integer') int a = kb.nextInt () int b = kb.nextInt () int s = a / b System.out.p rintln ('Quotient of' + a + 'dan' + b + 'is' + s)} public static void main (String [] args) {student1 Edureka1 = new student1 () Edureka1.add () Edureka1.sub () Edureka1. mul () Edureka1.div ()}}

Pengeluaran:

Melangkah lebih jauh, kami akan belajar menyarang Java Interface.

Bersarang antara muka Java

Bersarang antara muka adalah proses menyatakan Antaramuka di dalam yang lain Antaramuka Sedia Ada atau menyatakan Antaramuka di dalam a Kelas. Antaramuka Bersarang juga dikenali sebagai Antara Muka Dalaman.

Antaramuka Bersarang tidak dapat diakses secara langsung . Oleh itu, Nesting dilaksanakan untuk menyelesaikan Ruang Nama dengan mengelompokkannya dengan yang berkaitan Antara muka dan Kelas. Dengan prosedur ini,kita boleh memanggil Antaramuka Bersarang melalui Kelas Luar atau Antara Muka Luar nama diikuti oleh a titik (.) , dan Nama antara muka.

Mari kita mencuba beberapa contoh berdasarkan Bersarang antara muka. Pertama, mari kita cuba bersarang a Antara Muka Java di dalam yang lain Antara Muka Java seperti yang ditunjukkan di bawah:

// Kod antara muka

pakej Nest public interface OuterInterface {void display () interface InnerInterface {void InnerMethod ()}}

// Kod Kelas

pakej Nest class 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 ('nCetakan dari kaedah Nested InnerInterface ...! n ')} public static void main (String args []) {OuterInterface.InnerInterface obj = new NestedInterfaceDemo () obj.InnerMethod ()}}

Pengeluaran:

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

Sekarang, Mari kita cuba bersarang a Antara Muka Java di dalam a Kelas Java.

// Kod antara muka

pakej Nest2 kelas awam EdurekaClass {antara muka EdurekaInterface {batal NestedMethod ()}}

// Kod Kelas

pakej kelas Nest2 NestedInterfaceDemo2 mengimplementasikan EdurekaClass.EdurekaInterface {public void NestedMethod () {String input = 'Edureka' byte [] strAsByteArray = input.getBytes () byte [] result = byte baru [strAsByteArray.length] ib .length i ++) hasil [i] = strAsByteArray [strAsByteArray.length-i-1] System.out.println (String baru (hasil))} public static void main (String args []) {EdurekaClass.EdurekaInterface obj = baru NestedInterfaceDemo2 () obj.NestedMethod ()}}

Pengeluaran:

akerudE

Walaupun Antaramuka kelihatan hampir sama dengan Kelas, terdapat beberapa perbezaan di antara mereka, Mari kita bincangkan perbezaan mereka.

Perbezaan antara Java Class dan Java Interface

INTERFACE KELAS
Menyokong Warisan Berganda Tidak menyokong Warisan Berganda
Tidak mempunyai Ahli Data Termasuk Ahli Data
Tidak mempunyai Pembina Termasuk Pembina
Termasuk Ahli Tidak Lengkap (Ahli Tandatangan) Termasuk kedua-dua anggota Lengkap (Abstrak) dan Tidak Lengkap
Tidak mempunyai Pengubah Akses Termasuk Akses Pengubah
Antara muka tidak mempunyai Ahli Statik Kelas ini mempunyai semua anggotanya sebagai Statik

Kelebihan dan Kekurangan Antaramuka Java

Kelebihan:

  • Antaramuka Java menyokong Warisan Pelbagai.
  • Java Interface membolehkan pengaturcara memecah pendekatan pengaturcaraan yang kompleks dan mempermudah kebergantungan antara objek.
  • Antaramuka Java membuat ahli data dan kaedah dalam aplikasi untuk digabungkan secara longgar.

Kekurangan:

  • Penggunaan Java Interface menurunkan kelajuan pelaksanaan permohonan itu.
  • Antaramuka Java dalam aplikasi sama ada digunakan berulang kali pada umumnya atau hampir tidak digunakan sama sekali.

Perkara Utama pada Antaramuka Java

  • Tidak ada kaedah yang dinyatakan di antara muka yang memiliki badan yang menjadikannya memberikan abstraksi lengkap.
  • Tidak mustahil untuk membuat objek antara muka. Oleh itu, Instantiasi Antaramuka tidak mungkin dilakukan.
  • Kelas dapat melaksanakan antara muka dengan menggunakan alat kata kunci. Mari kita lihat ini melalui contoh.

// Kod antara muka

package extInterface public interface extInterface {public void method1 () public void method2 ()}

// Kod Kelas

package extInterface import java.util.Scanner class Edureka melaksanakan extInterface {public void method1 () {System.out.println ('Implementation of method1') Pengimbas pengimbas = Pengimbas baru (System.in) System.out.println ('Masukkan nombor untuk mencari punca kuasa dua di Java: ') double square = scanner.nextDouble () double squareRoot = Math.sqrt (square) System.out.printf (' root root of number:% f is:% f% n ', square, squareRoot)} kaedah kekosongan awam2 () {System.out.println ('implementasi kaedah2')} utama kekosongan awam (String arg []) {extInterface obj = new Edureka () obj.method1 ()}}

Pengeluaran:

pelaksanaan kaedah1 Masukkan nombor untuk mencari punca kuasa dua di Jawa: 16 Akar kuasa dua nombor: 16.0 ialah: 4.0
  • Kelas dapat melaksanakan pelbagai warisan dalam satu kejadian. Mari kita memahaminya melalui kod berikut.

// Kod antara muka 1

pakej ExtendInt public interface Interface1 {public void armstrong ()}

// Kod antara muka 2

pakej ExtendInt public interface Interface2 {public void prime ()} // Pakej Code class ExtendInt public class 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)} jika (temp == c) System.out.println ('armstrong number') lain-lain System.out.println ('Not armstrong number') System.out.println ('Extending to Interface 1')} public void prime () {int i, m = 0, flag = 0 int n = 3 // input m = n / 2 jika (n == 0 || n == 1) {System.out.println (n + 'is not prime number')} lain {untuk (i = 2i & lt = mi ++) {if (n% i == 0) {Sistem .out.println (n + 'is not prime number') flag = 1 break}} if (flag == 0) {System.out.println (n + 'is prime number')}} System.out.println ('Memperluas ke Antaramuka 2 ')} awam statik kekosongan utama (String args []) {Interface2 obj = new Edureka2 () obj.prime () Interface1 obj1 = baru Edureka2 () obj1.armstrong ()}}

Pengeluaran:

3 adalah nombor perdana Memanjangkan ke Antara Muka 2 nombor armstrong Memanjangkan ke Antara Muka 1
  • Java Interface memerlukan pemboleh ubah yang dinyatakan untuk diinisialisasi pada saat pengisytiharan.
  • Akses Pengubah untuk antara muka ditetapkan secara umum statik dan terakhir secara lalai. Mari kita fahami ini dengan contoh

// Kod antara muka

talend open studio untuk tutorial integrasi data
pakej ujian antara muka awam Cuba {// 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 sah di dalam Antaramuka.
  • Java Interface mampu memperluas sebilangan Interface, tetapi tidak pernah dapat melaksanakannya.
  • Kelas Java dapat melaksanakan sebilangan antara muka.
  • Kelas Java tidak dapat melaksanakan Antaramuka dengan nama kaedah yang sama dan jenis pengembalian yang berbeza.
  • Sekiranya terdapat dua atau lebih kaedah dengan nama kaedah yang sama, terdapat dalam pelbagai antara muka, maka pelaksanaan kaedah untuk sekali sudah cukup. Mari kita fahami ini dengan contoh praktikal.

// Kod antara muka

pakej antara muka awam yang sama A {paparan kekosongan awam ()} // Pakej Kod Antaramuka antara muka awam yang sama B {paparan kekosongan awam ()} // Pakej Kod kelas sama kelas melaksanakan A, B {paparan kekosongan awam () {System.out .println ('memaparkan data')} utama kekosongan statik awam (String [] args) {same print = new same () print.display ()}}

Pengeluaran:

Selamat Datang ke Edureka E-Learning

Dengan ini, kita akan mengakhiri artikel ini. Saya harap anda telah memahami kepentingan Interface, Syntax, function, Interface Nesting, Key point of Java Interface dan operasi yang dilakukan menggunakannya.

Sekarang setelah anda memahami asas-asas Java, lihat oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kursus latihan dan pensijilan Java J2EE dan SOA Edureka dirancang untuk pelajar dan profesional yang ingin menjadi Pembangun Java. Kursus ini dirancang untuk memberi anda awal dalam pengaturcaraan Java dan melatih anda untuk konsep Java teras dan maju bersama dengan pelbagai kerangka kerja Java seperti Hibernate & Musim bunga .

Ada soalan untuk kami? Sebutkannya di bahagian komen blog 'Java Interface' ini dan kami akan menghubungi anda secepat mungkin.