Yang saya maksud:
interface B {...}
interface A extends B {...} // allowed
interface A implements B {...} // not allowed
Saya mencarinya di Google dan menemukan ini :
implements
menunjukkan definisi implementasi untuk metode antarmuka. Namun antarmuka tidak memiliki implementasi jadi itu tidak mungkin.
Namun, antarmuka adalah kelas abstrak 100%, dan kelas abstrak dapat mengimplementasikan antarmuka (100% kelas abstrak) tanpa mengimplementasikan metodenya. Apa masalah saat ini didefinisikan sebagai "antarmuka"?
Secara detail,
interface A {
void methodA();
}
abstract class B implements A {} // we may not implement methodA() but allowed
class C extends B {
void methodA(){}
}
interface B implements A {} // not allowed.
//however, interface B = %100 abstract class B
sumber
implements
berarti sebuah perilaku akan didefinisikan untukabstract
metode (kecuali untuk kelas abstrak jelas), Anda mendefinisikan implementasinya.extends
berarti bahwa perilaku diwarisi.Dengan antarmuka adalah mungkin untuk mengatakan bahwa satu antarmuka harus memiliki perilaku yang sama dengan yang lain, bahkan tidak ada implementasi yang sebenarnya. Itulah mengapa lebih masuk akal untuk antarmuka ke
extends
antarmuka lain daripada menerapkannya.Di samping catatan, ingatlah bahwa meskipun sebuah
abstract
kelas dapat mendefinisikanabstract
metode (dengan cara yang wajar sebuah antarmuka melakukannya), itu masih sebuah kelas dan masih harus diwariskan (diperpanjang) dan tidak diimplementasikan.sumber
Secara konseptual ada dua kelas dan antarmuka "domain". Di dalam domain ini Anda selalu memperluas, hanya kelas yang menerapkan antarmuka, yang semacam "melintasi batas". Jadi pada dasarnya "meluas" untuk antarmuka mencerminkan perilaku kelas. Setidaknya menurut saya inilah logika di baliknya. Tampaknya tidak semua orang setuju dengan logika semacam ini (saya merasa sedikit dibuat-buat), dan sebenarnya tidak ada alasan teknis untuk memiliki dua kata kunci yang berbeda sama sekali.
sumber
Ini hanyalah masalah kesepakatan. Penulis bahasa java memutuskan bahwa "meluas" adalah cara terbaik untuk menggambarkan hubungan ini, jadi itulah yang kita semua gunakan.
Secara umum, meskipun sebuah antarmuka adalah "kelas abstrak 100%," kami tidak menganggapnya seperti itu. Kami biasanya berpikir tentang antarmuka sebagai janji untuk mengimplementasikan metode kunci tertentu daripada kelas asal. Jadi kami cenderung menggunakan bahasa yang berbeda untuk antarmuka daripada untuk kelas.
Seperti yang dinyatakan orang lain, ada alasan bagus untuk memilih "perluasan" daripada "penerapan".
sumber
Semoga ini bisa sedikit membantu Anda apa yang telah saya pelajari di ups (inti java) selama saya kuliah.
Implements menunjukkan definisi implementasi untuk metode antarmuka. Namun antarmuka tidak memiliki implementasi jadi itu tidak mungkin. Namun sebuah antarmuka dapat memperluas antarmuka lain, yang berarti ia dapat menambahkan lebih banyak metode dan mewarisi tipenya.
Berikut contoh di bawah ini, inilah pemahaman saya dan apa yang telah saya pelajari di ups.
dan ingat satu hal satu antarmuka hanya dapat memperluas antarmuka lain dan jika Anda ingin mendefinisikan fungsinya pada beberapa kelas maka hanya antarmuka yang diimplementasikan misalnya di bawah ini
Sekarang, jika sebuah kelas mengimplementasikan antarmuka ini, akan terlihat seperti ini:
dan jika kelas abstrak memiliki beberapa fungsi abstrak, definisikan dan deklarasikan, dan Anda ingin mendefinisikan fungsi tersebut atau Anda dapat mengatakan mengimplementasikan fungsi tersebut maka Anda harus memperluas kelas itu karena kelas abstrak hanya dapat diperpanjang. berikut adalah contoh di bawah ini.
Berikut adalah contoh subclass dari MyAbstractClass:
sumber
Antarmuka seperti abstraksi yang tidak menyediakan fungsionalitas apa pun. Oleh karena itu, Ia tidak 'mengimplementasikan' tetapi memperluas abstraksi atau antarmuka lain.
sumber
Antarmuka adalah kelas yang berisi metode abstrak yang tidak dapat membuat objek. Karena Antarmuka tidak dapat membuat objek dan ini bukan kelas murni, tidak ada gunanya mengimplementasikannya.
sumber