Artikel ini terutama mempelajari kelas multiplexed dalam pemrograman Java. Jadi apa itu kelas multipleks dan apa penggunaannya? Berikut adalah pengantar yang terperinci.
Setelah membaca wawancara dengan Luo Luo Shengyang, saya tidak bisa tidak mengaguminya. Dia masih sangat muda. Saya berpikir bahwa saya pada usia yang sama dengan Luo Yonghao, dan saya telah bertemu dengan salah satu orang besar yang bukan pemrograman sekolah menengah pertama dan senior. Setelah wawancara, saya menemukan bahwa Luo Luo juga orang yang mengambil satu langkah pada satu waktu. Jangan katakan bahwa itu sulit dilakukan atau Anda tidak dapat melakukannya. Anda tidak mencobanya atau bertahan.
Jika Anda tidak bisa terbang lalu lari, jika Anda tidak bisa berlari lalu berjalan, jika Anda tidak bisa berjalan maka merangkak, tapi
Apa pun yang Anda lakukan, Anda harus terus bergerak maju-Martin Luther King.
Judul kelas menggunakan kembali sulit dipahami di awal. Kemudian saya pergi untuk membaca versi bahasa Inggris asli dari buku ini. Bahkan, judulnya menggunakan kembali kelas, dan menggunakan kembali kelas berarti "menggunakan hal-hal yang sudah jadi". Bahkan, dua metode implementasi sering terdengar dalam kombinasi dan warisan Java.
(1) Kombinasi
Peran has-a.
tv kelas publik {show show; public string toString () {return "showgirl"; }} kelas show {} Mari kita sebutkan metode tostring. Saat Anda membutuhkan string dan Anda adalah objek, kompiler akan memanggil metode tostring objek.
Ada acara di TV. Acara saat ini tidak diinisialisasi dan nol. Metode acara tidak dapat dipanggil.
Kombinasi ini memiliki efek yang kuat. Dari perspektif yang berorientasi objek, jika Anda membuat kelas mobil, Anda dapat dengan mudah menggabungkan komponen kaca, cahaya, mesin, dan mobil lainnya menggunakan kombinasi.
(2) Warisan
IS-A
Paket com.myown.iaiti; ayah kelas publik {public int i; void get () {System.out.println ("ayah");}} packry son; import com.myown.iaiti.*; anak kelas publik meluas ayah {ayah f = ayah baru (); int j = fi; son son = new son (); son.gete. get () {super.get (); System.out.println ("son");}}Ada masalah dengan izin akses paket di sini. Jika publik tidak ditambahkan, standarnya adalah mengakses anggota dalam paket. Akses paket yang berbeda, yaitu, metode akses anggota ayah dalam putra tidak terlihat. Dan kata -kata publik terlihat, jadi saya akses diperoleh.
Bagian pribadi tidak dapat diwarisi dan menjadi milik orang tua kelas pribadi, sedangkan bagian publik akan diwarisi dan metode yang perlu dimodifikasi dapat ditulis ulang. Atribut yang akan ditambahkan dapat ditambahkan secara terpisah.
Selain itu, jika metode publik orangtua asli ditulis ulang, jika metode publik ayah asli tidak menambah publik, itu tidak akan mengurangi visibilitas metode yang diwariskan dari ayah, yang berarti bahwa visibilitas metode yang diwariskan dalam kelas induk tidak dapat dikurangi. Super mengacu pada kelas induk, yaitu ayah.
Poin lain adalah bahwa pada kenyataannya, semua kelas di Java secara implisit mewarisi kelas objek. Objek adalah kelas induk, dan kelas lainnya adalah subkelas. Orang asing suka membicarakannya sebagai kelas dasar. Subkelas juga disebut kelas yang diekspor atau kelas turunan.
(3) Agen
Ada cara yang relatif sulit untuk dipahami dalam model desain - model agen. Penulis membicarakannya dengan sangat menarik. Agen adalah doktrin rata -rata kombinasi dan warisan.
Paket putra; kelas ayah {public void get () {System.out.println ("ayah"); }} Son kelas publik memperluas ayah {public static void main (string [] args) {bapak f = new ayah (); f.get (); }} class bapaproxy {private father f = new father (); public void get () {f.get (); }}Jika Anda secara langsung memperlakukan ayah sebagai anggota, maka metode ayah akan terpapar ke kelas ini. Kemudian kita dapat menggunakan kelas proxy seperti ayah. Saya mendefinisikan cara mendapatkan metode mendapatkan sendiri. Saya tahu bahwa itu memanggil metode GET ayah, tetapi orang yang menggunakan proxy saya tidak tahu. Saya hanya memberi tahu dia bahwa jika Anda ingin menggunakannya, cukup gunakan metode GET proxy. Enkapsulasi tercermin. Di atas hanyalah contoh sederhana dari ketukan acak.
(4) Tulis ulang dan muat ulang
Class Father {public void get (string s) {System.out.println ("ayah"); } public void get (boolean b) {system.out.println ("boolean"); }} Son kelas publik memperluas ayah {@Override public void get (string s) {System.out.println ("ayah"); } // @Override // Akan ada pesan kesalahan karena kelas induk tidak memiliki metode ini, itu bukan penulisan ulang kekosongan publik get (int i) {system.out.println ("sonint"); } public static void main (string [] args) {son s = new son (); s.get ("d"); s.get (false); S.get (1); }}Penulisan ulang adalah untuk mengular kembali metode kelas induk. Jika tidak ada penulisan ulang atau kelebihan beban, maka ketika subclass memanggil metode yang tidak dimiliki subkelas, itu sebenarnya memanggil kelas induk.
Overloading adalah nama metode yang sama, tetapi nama parameter berbeda. Untuk mencegah Anda kelebihan beban kelebihan, Anda dapat menambahkan tag @Override, yang akan meminta Anda agar Anda belum menulis ulang metode ini.
(5) dilindungi
Penjelasan terperinci tentang Kode Kontrol untuk Izin Akses Pemrograman Java
Saya menulis artikel sebelumnya sebelumnya karena saya tidak berbicara tentang warisan sebelumnya.
Anda dapat dengan mudah dilindungi sebagai warisan kelas induk kepada putra, dan kelas-kelas non-weri lainnya tidak dapat diakses.
(6) Kata kunci akhir
Menambahkan tipe dasar dari kata kunci akhir berarti bahwa variabel ini tidak akan berubah setelah inisialisasi. Mirip dengan definisi C, Anda ingin variabel dalam program ini menjadi nilai ini tanpa berubah. Anda dapat menggunakan final.
Son kelas publik {int usia = 2; public static void main (string [] args) {final int i = 1; // i = 2; Nilai tidak dapat diubah lagi putra terakhir Son = new Son (); // son = new son (); // Putra variabel lokal terakhir tidak dapat ditugaskan. // Itu harus kosong dan tidak menggunakan penugasan majemuk // putra variabel lokal yang dimodifikasi oleh final tidak dapat ditetapkan, itu harus kosong atau tidak dialokasikan lagi son.age = 4; // Meskipun rujukannya konstan, objek itu sendiri dapat diubah. } void change (final int c) {// c = this.age; Tidak dapat menetapkan nilai baru karena nilai hanya menentukan referensi objek ketika metode melewati parameter dan menentukan referensi objek mirip dengan // usia ++; Tidak dapat diubah}} Statis awalnya adalah inisialisasi statis, dan digunakan dengan final untuk menempati sepotong ruang penyimpanan yang tidak dapat diubah.
Final statis adalah konstan selama periode kompilasi. Nama -nama konstan secara tradisional dinamai sesuai dengan konstanta c. Semua huruf kapital dan kata -kata dipisahkan oleh garis bawah.
value_one akhir statis = 1;
Saat memodifikasi metode terakhir
cetak kelas publik {final void cantprint () {System.out.println (1); }} kelas publik printson memperluas print {// void canTprint () {} // tidak dapat ditulis ulang karena dimodifikasi oleh final public static void main (string [] args) {printson ps = new printson (); ps.cannotprint (); }}Dapat dianggap sebagai properti yang tidak dimodifikasi (warisan leluhur) bahwa kelas induk mensyaratkan bahwa kelas anak harus diwariskan. Pribadi secara implisit ditentukan sebagai final, karena pribadi tidak memberi Anda warisan sama sekali. Ini lebih pribadi daripada memberi Anda warisan tetapi tidak memodifikasinya.
Ngomong -ngomong, hapus izin.
Ketika final memodifikasi kelas, itu adalah untuk mencegah kelas ini diwarisi.
(7) Warisan dan Inisialisasi
Masalah pesanan di sini adalah pertanyaan yang menarik. Lihat contoh.
kelas kakek {private static int i = print (); private static int print () {System.out.println ("g"); kembali 1; }} kelas ayah memperluas kakek {private static int i = print (); private static int print () {System.out.println ("f"); kembali 1; }} Son kelas publik memperluas ayah {private static int i = print (); private static int print () {System.out.println ("s"); kembali 1; } public static void main (string [] args) {System.out.println ("first"); }} Apakah hasil cetak terlebih dahulu? Salah.
Meskipun metode utama dieksekusi, saya melihat putra itu, yang membutuhkan inisialisasi statis, tidak memilikinya, tetapi hasilnya adalah s, pertama?
Ada juga masalah inisialisasi. Anak mewarisi ayah, sehingga kompiler akan memuat ayah dan menginisialisasi i. Jika ayah mewarisi kakek, maka kompiler akan memuat kakek, mirip dengan rekursi.
Yang terakhir diinisialisasi adalah kakek i.
Jadi hasil akhirnya adalah: g, f, s, pertama.
Meringkaskan
Di atas adalah semua penjelasan terperinci dari kode multiplexing pemrograman Java dalam artikel ini, saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!