Konsep dan penggunaan antarmuka Java <BR /> dalam kelas abstrak, satu atau lebih metode abstrak dapat dimasukkan;
Kata kunci antarmuka diumumkan, yang dapat dianggap sebagai kelas abstrak khusus yang menentukan apa yang harus dilakukan kelas, daripada menentukan bagaimana melakukannya.
Ada juga banyak contoh antarmuka dalam kenyataan, seperti hard drive komputer serial. Komite ATA serial tidak bertanggung jawab untuk memproduksi hard drive, tetapi hanya menentukan spesifikasi umum.
Seagate, Hitachi, Samsung dan produsen lain akan menghasilkan hard disk yang memenuhi antarmuka sesuai dengan spesifikasi, dan hard disk ini dapat digeneralisasi. 320G Seagate Serial Hard Disk dan pasang. Anda dapat terus menggunakannya saat Anda naik.
Kode berikut dapat mensimulasikan komite ATA serial untuk menentukan antarmuka hard disk serial berikut:
// Antarmuka Hard Disk Serial Antarmuka Publik Satahdd {// Jumlah jalur koneksi statis int connect_line = 4;Catatan: Variabel anggota yang dinyatakan dalam antarmuka adalah final statis publik secara default dan harus ditampilkan diinisialisasi. Oleh karena itu, pengubah ini dapat dihilangkan saat menyatakan konstanta.
Antarmuka adalah kumpulan beberapa konstanta dan metode abstrak, yang saat ini tampaknya mirip dengan kelas abstrak. Memang, antarmuka berevolusi dari kelas abstrak, jadi kecuali ditentukan lain, antarmuka menikmati "perawatan" yang sama dengan kelas. Misalnya, beberapa kelas atau antarmuka dapat didefinisikan dalam program sumber, tetapi paling banyak satu kelas publik atau antarmuka dapat tersedia. Seperti format warisan kelas, antarmuka juga dapat diwariskan, dan sub-interfaces dapat mewarisi konstanta dan metode abstrak dalam antarmuka induk dan menambahkan metode abstrak baru, dll.
Namun, antarmuka memiliki karakteristiknya sendiri, dirangkum sebagai berikut.
1) Hanya metode abstrak yang dapat didefinisikan dalam antarmuka. Mencoba mendefinisikan variabel instance, metode instance non-abstrak dan metode statis dalam antarmuka semuanya ilegal. Misalnya:
Antarmuka Publik Satahdd {// Jumlah jalur koneksi Int ConnectLine publik; Jadilah tipe publik // Baca data public string statis readdata () {// Kesalahan kompilasi, antarmuka tidak dapat berisi metode statis "data";3) Tidak ada konstruktor dalam antarmuka dan tidak dapat dipakai.
4) Satu antarmuka tidak menerapkan antarmuka lain, tetapi dapat mewarisi banyak antarmuka lainnya. Fitur multi-warisan antarmuka menebus warisan tunggal kelas. Misalnya:
// Antarmuka Hard Disk Antarmuka Publik Satahdd Memperluas A, B {// Jumlah jalur koneksi intertasi statis public static connect_line = 4; ;} antarmuka {public void a ();} antarmuka b {public void b ();}Mengapa menggunakan antarmuka
Dalam pengembangan proyek skala besar, mungkin perlu untuk memasukkan kelas dari tengah rantai warisan untuk memungkinkan subclassnya memiliki fungsi tertentu tanpa mempengaruhi kelas induknya. Misalnya, A -> B -> C -> D -> E, A adalah kelas leluhur. kelas. Tetapi masalahnya adalah bahwa Java adalah bahasa warisan tunggal. Dengan cara ini, modifikasi pada kelas C, D, dan E mempengaruhi seluruh rantai warisan dan tidak dapat dicolokkan.
Antarmuka adalah jaminan dimasukkan. Kelas apa pun dalam rantai warisan dapat menerapkan antarmuka, yang akan mempengaruhi semua subkelas dari kelas ini, tetapi tidak akan mempengaruhi kelas induk dari kelas ini. Kelas -kelas semacam itu harus mengimplementasikan metode yang ditentukan oleh antarmuka ini, dan subclass dapat secara otomatis mewarisi metode ini dari kelas ini, dan pada saat ini, subkelas ini dapat dicolokkan.
Yang kita pedulikan bukan kelas tertentu, tetapi apakah kelas ini mengimplementasikan antarmuka yang kita butuhkan.
Antarmuka menyediakan panggilan interpolasi dan metode. Semakin besar skala sistem perangkat lunak, semakin lama siklus hidup.
Antarmuka memainkan peran penting dalam pemrograman Java yang berorientasi objek. Faktanya, salah satu tugas terpenting dalam tahap desain adalah merancang antarmuka setiap bagian, dan kemudian membentuk struktur kerangka dasar program melalui kombinasi antarmuka.
Penggunaan antarmuka
Penggunaan antarmuka agak berbeda dari kelas. Di mana Anda perlu menggunakan kelas, kata kunci baru akan digunakan secara langsung untuk membangun instance kelas, tetapi antarmuka tidak dapat digunakan seperti ini karena antarmuka tidak dapat secara langsung menggunakan kata kunci baru untuk membangun instance.
Antarmuka harus mengimplementasikan metode abstraknya melalui kelas, dan kemudian instantiate kelas. Kata kunci antarmuka implementasi kelas adalah implementasi.
Jika suatu kelas tidak dapat menerapkan semua metode abstrak antarmuka, maka kelas harus didefinisikan sebagai metode abstrak.
Sebuah instance dari suatu antarmuka tidak diperbolehkan dibuat, tetapi variabel referensi dari tipe antarmuka diizinkan untuk didefinisikan, yang menunjuk ke instance kelas yang mengimplementasikan antarmuka.
Kelas hanya dapat mewarisi satu kelas induk, tetapi dapat mengimplementasikan beberapa antarmuka.
Format antarmuka implementasi adalah sebagai berikut:
Nama Kelas Kelas Modifier Perpanjangan kelas induk mengimplementasikan beberapa antarmuka {
Metode implementasi
}
Silakan lihat contoh berikut:
Impor statis java.lang.system.*; Demo kelas publik {public static void main (string [] args) {satahdd sh1 = baru seagatehdd (); Samsung Hard Disk}} // Antarmuka Antarmuka Hard Disk Serial Satahdd {// Jumlah jalur koneksi statis public int connect_line = 4; ;}// Perbaikan Antarmuka Hard Disk Fixhdd {// Alamat Perbaikan Alamat String = "Haidian District, Beijing"; String readdata () {return "data"; // Samsung Hard Drive Samsunghdd mengimplementasikan Satahdd {// Samsung hard drive readdata () {return "data"; Hard disk berkualitas buruk tidak dapat menulis data abstrak kelas xxhdd mengimplementasikan satahdd {// hard disk membaca data public string readData () {return "data";Gunakan antarmuka sebagai jenis
Antarmuka digunakan sebagai jenis referensi. Tentukan bahwa itu harus menjadi metode kelas mana yang digunakan sebenarnya memanggil metode kelas implementasi yang sesuai.
Contohnya adalah sebagai berikut:
Demo Public {public void test1 (a) {a.doSth (); A); Hasil Menjalankan:
sekarang di b
Seperti yang Anda lihat, antarmuka dapat digunakan sebagai tipe, menggunakan antarmuka sebagai parameter metode dan tipe pengembalian.
Perbedaan antara antarmuka Java dan kelas abstrak <BR /> kelas adalah templat objek, dan kelas abstrak dan antarmuka dapat dianggap sebagai templat kelas konkret.
Karena dari perspektif tertentu, antarmuka adalah kelas abstrak khusus, mereka memiliki koneksi yang mendalam dan memiliki kesamaan besar, jadi mudah untuk bingung tentang siapa yang harus digunakan. Kami pertama -tama menganalisis kesamaan yang mereka miliki.
Mereka semua mewakili lapisan abstrak struktur seperti pohon. Saat menggunakan variabel referensi, cobalah menggunakan lapisan abstrak dari struktur kelas untuk memisahkan definisi dan implementasi metode ini.
Tak satu pun dari mereka yang bisa dipakai.
Semua dapat berisi metode abstrak. Metode abstrak digunakan untuk menggambarkan fungsi apa yang disediakan sistem tanpa harus peduli dengan implementasi tertentu.
Mari kita bicara tentang perbedaan utama antara kelas abstrak dan antarmuka.
1) Kelas abstrak dapat memberikan implementasi untuk beberapa metode, menghindari implementasi berulang dari metode ini dalam subkelas, dan meningkatkan reusability kode.
PUBLIK ABSTRAK Kelas A {Public Abstract Void Methone1 (); method1 () {// c method1}}Abstrak Kelas A memiliki dua subclass B dan C. Karena A memiliki implementasi metode metode di dalamnya, metode Method2 tidak perlu ditulis ulang dalam subkelas B dan C. Kami mengatakan bahwa A menyediakan fungsi publik untuk subkelas, atau membatasi itu Perilaku subkelas. Method2 adalah contoh kode yang dapat digunakan kembali. A tidak mendefinisikan implementasi Method1, yaitu, B dan C dapat mengimplementasikan metode Method1 sesuai dengan karakteristik mereka sendiri, yang mencerminkan karakteristik kopling longgar.
Ubah ke antarmuka dan lihat:
antarmuka publik A {public void method1 (); mengimplementasikan {public void method1 () {// c method1} public void method2 () {// c method2}}Antarmuka A tidak dapat menyediakan fungsi publik untuk mengimplementasikan kelas B dan C, yang berarti bahwa A tidak dapat membatasi perilaku B dan C. B dan C dapat secara bebas mengerahkan karakteristik mereka dan metode metode realistis dan metode Method2, dan antarmuka A tidak memiliki kemampuan kontrol.
2) Kelas hanya dapat mewarisi kelas induk langsung (mungkin kelas abstrak), tetapi kelas dapat menerapkan beberapa antarmuka, yang merupakan keuntungan dari antarmuka.
antarmuka a {public void method2 ();} antarmuka b {public void method1 ();} kelas C mengimplementasikan a, b {public void method1 () {// c method1} publ ic void method2 () {// c method2} } // C dapat digunakan dengan sangat fleksibel, dan C memiliki kesempatan untuk memperluas dan mengimplementasikan antarmuka lain A = baru C (); Class B memperluas A {public abstrak void method2 ();} kelas C memperluas b {public void method1 () {// c method1} public void method2 () {// c method2}}Untuk Kelas C, tidak akan ada kesempatan untuk mewarisi kelas orang tua lainnya.
Singkatnya, antarmuka dan kelas abstrak memiliki kelebihan dan kekurangannya sendiri.
Model perilaku harus selalu didefinisikan melalui antarmuka daripada kelas abstrak, sehingga antarmuka biasanya lebih disukai dan kelas abstrak harus digunakan sesedikit mungkin.
Saat memilih kelas abstrak, biasanya situasi berikut: Anda perlu mendefinisikan perilaku subkelas dan menyediakan fungsi umum untuk subkelas.