Artikel ini menjelaskan penggunaan antarmuka dan kelas abstrak di Java. Bagikan untuk referensi Anda, sebagai berikut:
Dalam konsep berorientasi objek, kita tahu bahwa semua objek digambarkan oleh kelas, tetapi tidak semua kelas digunakan untuk menggambarkan objek. Jika kelas tidak berisi informasi yang cukup untuk menggambarkan objek konkret, kelas seperti itu adalah kelas abstrak.
Kelas abstrak sering digunakan untuk mewakili konsep abstrak yang kita peroleh dalam menganalisis dan merancang bidang masalah. Mereka adalah abstraksi dari serangkaian konsep konkret yang tampak berbeda tetapi pada dasarnya sama. Kami tidak dapat membuat mereka instantiasi (tidak dapat menghasilkan benda konkret), jadi kami menyebutnya abstraksi.
Misalnya: Ketika kita ingin menggambarkan "buah", itu adalah abstraksi. Ini memiliki beberapa karakteristik umum seperti massa dan volume (buah memiliki massa), tetapi tidak memiliki karakteristik (apel dan jeruk adalah buah -buahan, dan mereka memiliki karakteristik sendiri). Kami tidak dapat menghasilkan satu -satunya hal yang dapat mewakili buah -buahan (karena apel dan jeruk tidak dapat mewakili buah). Kelas abstrak dapat digunakan untuk menggambarkannya, sehingga kelas abstrak tidak dapat dipakai. Ketika kami menggunakan kelas tertentu untuk menggambarkan "apel", kelas ini dapat mewarisi kelas abstrak yang menggambarkan "buah". Kita semua tahu bahwa "apel" adalah semacam "buah".
Di bidang berorientasi objek, kelas abstrak terutama digunakan untuk persembunyian tipe. Kita dapat membangun deskripsi abstrak yang tetap tentang serangkaian perilaku, tetapi serangkaian perilaku ini dapat memiliki metode implementasi konkret yang mungkin. Deskripsi abstrak ini adalah kelas abstrak, dan set dari segala kemungkinan implementasi konkret bermanifestasi sebagai semua kelas turunan dari kelas abstrak ini.
Semua metode abstrak dalam antarmuka dan kelas abstrak tidak dapat diimplementasikan dalam implementasi konkret, tetapi harus mengimplementasikan semua metode abstrak dalam subclass mereka (harus memiliki tubuh fungsi, bahkan jika kosong di {}). Perancang Java dapat mempertimbangkan fleksibilitas metode abstrak, dan setiap subkelas dapat menerapkan metode abstrak sesuai dengan kebutuhan mereka sendiri.
Definisi kelas abstrak adalah sebagai berikut:
Kelas Abstrak Publik AbstractClass // setidaknya ada satu metode abstrak di dalamnya {public int t; // Anggota Data Biasa Abstrak Metode Void Publik1 (); // Metode Abstrak, Subclass dari Kelas Abstrak harus mengimplementasikan metode abstrak di kelas abstrak di kelas Metode Void Abstrak Publik2 (); Metode public void3 (); // metode non-abstrak Metode int publik4 (); Metode int publik4 () {... // Kelas abstrak dapat diberikan perilaku default metode metode non-abstrak, yaitu, implementasi konkret dari metode ini} public void Method3 () {... // Kelas abstrak dapat ditetapkan sebagai perilaku default metode metode non-abstrak, yaitu, implementasi konkret dari metode}}}}}}}}}}}}}}}}}}Definisi antarmuka adalah sebagai berikut:
Antarmuka Antarmuka Antarmuka Publik {static final int i; // Tidak ada anggota data biasa di antarmuka, hanya anggota data statis yang tidak dapat dimodifikasi. Statis berarti global, cara akhir tidak dapat dimodifikasi. Ini dapat dimodifikasi tanpa modifikasi akhir statis, dan akan secara implisit dinyatakan sebagai metode public void statis dan akhir (); // Metode dalam antarmuka harus berupa metode abstrak, sehingga metode public void2 () tidak memerlukan modifikasi abstrak; // Perilaku default metode tidak dapat ditetapkan ke antarmuka, yaitu, tidak mungkin ada implementasi spesifik dari metode ini}Singkatnya, kelas abstrak adalah kelas yang tidak lengkap, dan antarmuka hanyalah koleksi deklarasi metode abstrak dan data statis yang tidak dapat dimodifikasi, keduanya tidak dapat dipakai.
Dalam arti tertentu, antarmuka adalah bentuk khusus dari kelas abstrak. Dalam bahasa Java, kelas abstrak mewakili hubungan warisan. Kelas hanya dapat mewarisi satu kelas abstrak, sementara kelas dapat menerapkan banyak antarmuka. Dalam banyak kasus, antarmuka memang dapat menggantikan kelas abstrak, jika Anda tidak perlu dengan sengaja mengekspresikan warisan pada atribut.
Untuk lebih memahami, untuk tujuan Java memperkenalkan kelas dan antarmuka abstrak, jawaban yang saya dapatkan dari para ahli adalah sebagai berikut:
1. Dari perspektif hierarki kelas, kelas abstrak berada di puncak level, tetapi dalam desain yang sebenarnya, kelas abstrak umumnya harus muncul kemudian. Mengapa? Faktanya, akuisisi kelas abstrak agak seperti mengekstraksi faktor umum dalam matematika: AX+BX, X adalah kelas abstrak. Jika Anda tidak memiliki formula sebelumnya, bagaimana Anda tahu jika X adalah faktor umum? Dalam hal ini, ini juga sejalan dengan proses pemahaman orang, konkret pertama dan kemudian abstrak. Oleh karena itu, jika Anda mendapatkan banyak konsep spesifik dan menemukan kesamaan dalam proses desain, harus benar bahwa kumpulan kesamaan ini adalah kelas abstrak.
2. Di permukaan, antarmuka sangat mirip dengan kelas abstrak, tetapi penggunaannya sama sekali berbeda. Fungsi dasarnya adalah mengumpulkan beberapa kelas (konsep) yang tidak relevan bersama -sama untuk membentuk "kelas baru" baru yang dapat dioperasikan secara terpusat. Contoh khas yang saya berikan kepada siswa adalah "pengemudi". Siapa yang bisa menjadi pengemudi? Siapa pun dapat melakukannya, selama Anda mendapatkan SIM Anda. Jadi saya tidak peduli apakah Anda seorang mahasiswa, pekerja kerah putih, pekerja kerah biru atau bos, selama Anda memiliki SIM, Anda adalah seorang pengemudi.
antarmuka driverlicence {lisensi getLicence (); } class StudentDriver memperluas Siswa mengimplementasikan pengemudi {} kelas whtiecollaremplivereedriver memperluas whtiecollaremployee mengimplementasikan pengemudi {} class bluecollarempliverriver memperluas pengemudi bluecollareMeree.Ketika saya mendefinisikan kelas "mobil", saya dapat menentukan "driver".
class car {setDriver (driverlicence driver);}Pada saat ini, objek mobil tidak peduli apa yang dilakukan pengemudi. Satu -satunya titik umum mereka adalah bahwa mereka telah memperoleh SIM (keduanya menerapkan antarmuka pengemudi). Ini harus menjadi bagian paling kuat dari antarmuka dan tidak ada bandingannya dengan kelas abstrak.
Meringkaskan:
Kelas abstrak mengekstrak faktor -faktor umum dari kelas konkret, sementara antarmuka adalah untuk "hash" beberapa kelas yang tidak terkait menjadi kelompok umum. Biasanya, kami mengembangkan kebiasaan yang baik menggunakan beberapa antarmuka. Bagaimanapun, Java adalah warisan tunggal, tidak seperti C ++, tetapi harus digunakan saat menggunakan kelas abstrak (agak mirip dengan goto), haha.
Saya harap artikel ini akan membantu pemrograman Java semua orang.