1. Dalam deklarasi kelas, gunakan kata kunci extends untuk membuat subkelas dari kelas tersebut. Sebuah kelas mendeklarasikan bahwa ia menggunakan satu atau lebih antarmuka melalui kata kunci implementasi.
Memperluas berarti mewarisi kelas tertentu. Setelah pewarisan, Anda dapat menggunakan metode kelas induk, atau Anda dapat mengganti metode kelas induk; implementasi berarti mengimplementasikan beberapa antarmuka. Metode antarmuka umumnya kosong dan harus ditulis ulang sebelum dapat digunakan.
2. Perluasan adalah untuk mewarisi kelas induk. Selama kelas tersebut tidak dinyatakan sebagai kelas final atau kelas tersebut didefinisikan sebagai abstrak, maka JAVA tidak mendukung pewarisan berganda, tetapi dapat diimplementasikan menggunakan antarmuka dalam hal ini, implementasi harus digunakan. Warisan hanya dapat Mewarisi kelas, tetapi implementasi dapat mengimplementasikan beberapa antarmuka, cukup pisahkan dengan koma
Copy kode kodenya sebagai berikut:
kelas A memperluas implementasi B C,D,E
Setelah belajar sekian lama, akhirnya saya paham implementasinya hari ini. Sebenarnya sangat sederhana. Lihat saja contoh berikut~~
Beberapa konsep antarmuka
<!--[jika !supportLineBreakNewLine]-->
Copy kode kodenya sebagai berikut:
Pelari wajah bagian dalam publik
{
int ID = 1;
batal dijalankan();
}
antarmuka Hewan memperluas Runner
{
batal bernapas();
}
kelas Ikan mengimplementasikan Hewan
{
menjalankan kekosongan publik()
{
System.out.println("ikan sedang berenang");
}
nafas kekosongan publik()
{
System.out.println("Ikan menggelegak");
}
}
abstrak LandAnimal mengimplementasikan Animal
{
pernafasan kekosongan umum ()
{
System.out.println("Hewan Darat bernapas");
}
}
kelas Siswa memperluas Orang mengimplementasikan Pelari
{
...
menjalankan kekosongan publik()
{
System.out.println("siswa sedang berjalan");
}
...
}
pamflet antarmuka
{
batal terbang();
}
kelas Burung mengimplementasikan Pelari, Penerbang
{
menjalankan kekosongan publik()
{
System.out.println("burung sedang berlari");
}
lalat kekosongan publik()
{
System.out.println("burung itu terbang");
}
}
kelas TestFish
{
public static void main (String args[])
{
Ikan f = Ikan baru();
ke dalam j = 0;
j = Pelari.ID;
j = f.ID;
}
}
Catatan tentang implementasi antarmuka:
a.Mengimplementasikan antarmuka berarti mengimplementasikan semua metode antarmuka (kecuali kelas abstrak).
b.Metode dalam antarmuka bersifat abstrak.
c. Beberapa kelas yang tidak berhubungan dapat mengimplementasikan antarmuka yang sama, dan satu kelas dapat mengimplementasikan beberapa antarmuka yang tidak berhubungan.
==================== =========
Perbedaan antara extends danimplement
extends adalah mewarisi kelas induk. Selama kelas tersebut tidak dinyatakan sebagai final atau kelas tersebut didefinisikan sebagai abstrak, maka JAVA tidak mendukung pewarisan berganda, tetapi dapat diimplementasikan menggunakan antarmuka. implementasi harus digunakan. Warisan hanya dapat mewarisi satu Kelas, tetapi implementasi dapat mengimplementasikan beberapa antarmuka, cukup pisahkan dengan koma
kelas A memperluas implementasi B C,D,E
Sebuah kelas mendeklarasikan bahwa ia menggunakan satu atau lebih antarmuka melalui kata kunci implementasi. Dalam deklarasi kelas, gunakan kata kunci extends untuk membuat subkelas dari kelas tersebut.
Copy kode kodenya sebagai berikut:
nama subkelas kelas memperluas nama kelas induk mengimplementasikan nama antarmuka
{...
}
==================== =========
A a = new B(); Hasilnya, a adalah turunan dari kelas A dan hanya dapat mengakses metode di A. Jadi apa bedanya dengan A a = new A();?
==================== ========
kelas B meluas ke A
Setelah pewarisan, beberapa anggota atau metode yang tidak ditemukan di kelas induk biasanya ditentukan.
A a = baru B();
Tidak apa-apa, unggah.
a adalah turunan dari objek kelas induk, dan oleh karena itu tidak dapat mengakses anggota atau metode baru yang ditentukan oleh subkelas.
==================== ========
Jika didefinisikan seperti ini:
kelas A{
ke dalam aku;
batal f(){}
}
kelas B diperluas A{
ke dalam j;
batal f(){}//Tulis ulang
batal g(){}
}
Kemudian:
B b = baru B();
b adalah turunan dari objek subkelas. Ia tidak hanya dapat mengakses properti dan metodenya sendiri, tetapi juga properti dan metode kelas induknya. Hal-hal seperti bi, bj, bf(), bg() semuanya legal. Saat ini bf() sedang f() di B diakses
A a = baru B();
Meskipun a menggunakan konstruktor B, ia menjadi turunan dari objek kelas induk setelah upcast dan tidak dapat mengakses properti dan metode subkelas. ai,af() legal, tetapi aj,ag() ilegal. Saat ini, mengakses af() berarti mengakses f() di B
==================== ========
A a = new B(); Pernyataan ini sebenarnya memiliki tiga proses:
(1) A;
Deklarasikan a sebagai objek kelas induk, hanya referensi, tidak ada ruang yang dialokasikan
(2) Suhu B = B baru();
Sebuah instance dari objek kelas B dibuat melalui konstruktor kelas B, yaitu diinisialisasi
(3) a = (A)suhu;
Ubah temp objek subkelas menjadi objek kelas tanpa induk dan tetapkan ke a.
Setelah tiga proses di atas, a telah sepenuhnya menjadi turunan dari kelas A.
Subkelas sering kali memiliki lebih banyak properti dan metode daripada kelas induk. Pengunggahan hanya membuangnya, sehingga aman, sementara downcasting terkadang meningkatkannya, yang biasanya tidak aman;
==================== =========
af() harus sesuai dengan metode f() kelas B
Setelah memanggil konstruktor untuk membuat sebuah instance, pintu masuk ke metode yang sesuai telah ditentukan.
Sejak itu, meskipun a telah diunggah sebagai kelas A, metode f() yang diganti tetap merupakan metode f() dari B. Artinya, setiap objek mengetahui metode mana yang harus dipanggil.
A a1 = baru B();
A a2 = baru C();
Meskipun a1 dan a2 sama-sama merupakan objek kelas A, f() masing-masing berbeda. Inilah perwujudan polimorfisme yang disebutkan di lantai pertama.
Masalah-masalah tersebut dijelaskan dengan sangat jelas dalam "Pemikiran Pemrograman Java"
Implements umumnya mengimplementasikan antarmuka. extends adalah kelas yang diwarisi. Antarmuka umumnya hanya memiliki deklarasi metode tetapi tidak ada definisi, jadi masuk akal bagi Java untuk secara khusus menunjukkan implementasi antarmuka, karena pewarisan berarti kelas induk telah mengimplementasikan metode, sedangkan antarmuka tidak mengimplementasikan metodenya sendiri, hanya deklarasi, yaitu Header metode tidak memiliki isi metode. Oleh karena itu, Anda dapat memahami bahwa antarmuka adalah subkelas yang mengimplementasikan deklarasi metodenya, bukan mewarisi metodenya. Namun, metode kelas umum dapat memiliki badan metode, jadi lebih masuk akal untuk menyebutnya warisan. Mengimpor suatu paket dapat menggunakan semua kelas yang mengimplementasikan non-interface di dalamnya. Kemudian Anda memutuskan apakah akan mengimplementasikan antarmuka atau tidak. Jika Anda ingin menggunakannya, Anda tidak dapat memanggil antarmuka tanpa mengimplementasikannya, karena antarmuka adalah spesifikasi, kumpulan deklarasi metode tanpa badan metode. Izinkan saya memberi Anda sebuah contoh: sebuah antarmuka dapat dibandingkan dengan sebuah protokol. Misalnya, jika saya mengatakan sebuah protokol "membunuh", maka Anda dapat menggunakan parang untuk mengimplementasikan antarmuka ini Tentu saja, Anda juga dapat menggunakan grab untuk mengimplementasikan antarmuka pembunuhan, tetapi Anda tidak dapat menggunakan antarmuka pembunuhan untuk membunuh orang, karena antarmuka pembunuhan hanyalah deskripsi fungsi dan protokol . Jadi jika ada antarmuka dalam sebuah paket, Anda tidak perlu mengimplementasikannya. Ini tidak mempengaruhi penggunaan kelas lain oleh Anda.
mengimplementasikan
mengimplementasikan adalah kata kunci yang digunakan oleh kelas untuk mengimplementasikan antarmuka. Ini digunakan untuk mengimplementasikan metode abstrak yang ditentukan dalam antarmuka. Misalnya: people adalah sebuah antarmuka, dan ia memiliki metode say. antarmuka publik people(){ public say();} Namun antarmuka tidak memiliki isi metode. Badan metode hanya dapat diimplementasikan melalui kelas tertentu. Misalnya, kelas bahasa Mandarin mengimplementasikan antarmuka orang. kelas publik cina mengimplementasikan orang{ public say() {System.out.println("Halo!");}}
Di Java, implementasi berarti subkelas mewarisi kelas induk. Misalnya, kelas A mewarisi kelas B dan ditulis sebagai implementasi kelas A B{}
Perbedaan dari Extends
meluas, Anda dapat mengimplementasikan kelas induk, atau Anda dapat memanggil kelas induk untuk menginisialisasi this.parent(). Dan itu akan menimpa variabel atau fungsi yang ditentukan oleh kelas induk. Keuntungannya adalah arsitek dapat menentukan antarmuka dan membiarkan insinyur mengimplementasikannya. Efisiensi pengembangan dan biaya pengembangan keseluruhan proyek berkurang secara signifikan.
mengimplementasikan, mengimplementasikan kelas induk, dan subkelas tidak dapat mengganti metode atau variabel kelas induk. Meskipun subkelas mendefinisikan variabel atau fungsi yang sama dengan kelas induk, subkelas tersebut akan digantikan oleh kelas induk.
Penggunaan spesifik dari kedua implementasi ini bergantung pada situasi aktual proyek dan perlu diimplementasikan. Implementasi tidak dapat dimodifikasi. Hanya antarmuka yang ditentukan yang perlu diimplementasikan secara spesifik, atau dapat dimodifikasi untuk skalabilitas yang baik.
<!--[endif]-->