Artikel ini menganalisis perbedaan antara antarmuka dan kelas abstrak dalam pembelajaran Java, yang sangat penting bagi pemula untuk mempelajari konsep pemrograman Java secara mendalam dan akurat. Detailnya adalah sebagai berikut:
Pemula Java sering menanyakan pertanyaan seperti: Apa perbedaan antara antarmuka dan kelas abstrak? Atas dasar apa Anda memilih untuk menggunakan antarmuka dan kelas abstrak?
Konsep antarmuka dan kelas abstrak berbeda. Antarmuka adalah abstraksi tindakan, dan kelas abstrak adalah abstraksi sumbernya.
Kelas abstrak mewakili objek ini. Antarmuka mewakili apa yang dapat dilakukan objek ini. Misalnya laki-laki dan perempuan, kedua kelas ini (jika kelas...), kelas abstraknya adalah manusia. Jelaskan bahwa mereka semua adalah manusia.
Orang bisa makan, dan anjing juga bisa makan. Anda dapat mendefinisikan "makan" sebagai antarmuka, dan kemudian membiarkan kelas-kelas ini mengimplementasikannya.
Oleh karena itu, dalam bahasa tingkat tinggi, sebuah kelas hanya dapat mewarisi satu kelas (kelas abstrak) (seperti halnya seseorang tidak dapat menjadi makhluk hidup dan benda mati pada saat yang sama), tetapi dapat mengimplementasikan banyak antarmuka (antarmuka makan , antarmuka berjalan).
Poin pertama. Antarmuka adalah varian dari kelas abstrak, dan semua metode dalam antarmuka bersifat abstrak. Kelas abstrak adalah kelas yang mendeklarasikan keberadaan suatu metode tanpa mengimplementasikannya.
Poin kedua. Antarmuka dapat diwariskan, tetapi kelas abstrak tidak bisa (Catatan: Penulis asli membuat kesalahan di sini. Kelas abstrak dapat diwarisi. Jika semua subkelas mengimplementasikan metode di kelas abstrak, subkelas tersebut bukan kelas abstrak; jika tidak, salah satu dari mereka belum diimplementasikan. Maka subkelasnya juga merupakan kelas abstrak)
Poin ketiga. Metode definisi antarmuka tidak dapat diimplementasikan, sedangkan kelas abstrak dapat mengimplementasikan beberapa metode.
Poin keempat. Tipe data dasar pada antarmuka adalah statis tetapi gambar abstraknya tidak.
Saat Anda fokus pada esensi suatu hal, gunakan kelas abstrak; saat Anda fokus pada suatu operasi, gunakan antarmuka.
Fungsionalitas kelas abstrak jauh melebihi antarmuka, tetapi biaya untuk mendefinisikan kelas abstrak tinggi . Karena dalam bahasa tingkat tinggi (dan dalam hal desain sebenarnya), setiap kelas hanya dapat mewarisi satu kelas. Di kelas ini, Anda harus mewarisi atau menuliskan semua fitur umum dari semua subkelasnya. Meskipun antarmuka akan jauh lebih lemah fungsinya, itu hanya deskripsi suatu tindakan. Dan Anda dapat mengimplementasikan beberapa antarmuka dalam satu kelas secara bersamaan. Kesulitan akan berkurang selama tahap desain.