Jadual Kandungan
Polimorfisme dalam Java
Contoh
Output
Menulis semula dalam Java
Mengapa pembolehubah tidak mengikut polimorfisme dan mengatasi?
Penutup pembolehubah dan persembunyian berubah
Kesimpulan
Rumah Java javaTutorial Pembolehubah dalam Java tidak mengikut polimorfisme dan mengatasi

Pembolehubah dalam Java tidak mengikut polimorfisme dan mengatasi

Sep 09, 2023 pm 06:13 PM
- Polimorfisme - pembolehubah - tulis semula

Pembolehubah dalam Java tidak mengikut polimorfisme dan mengatasi

Dalam dunia pengaturcaraan berorientasikan objek (OOP), polimorfisme dan penulisan semula ialah konsep utama yang membawa fleksibiliti dan daya hidup kepada bahasa pengaturcaraan. Java, sebagai bahasa OOP yang berkuasa, menyokong sepenuhnya ciri ini. Walau bagaimanapun, adalah penting untuk memahami bahawa ciri-ciri ini digunakan untuk kaedah di Jawa dan bukan untuk pembolehubah. Dalam artikel ini, kita akan meneroka sebab pembolehubah dalam Java tidak mengikut polimorfisme dan mengatasi untuk mendapatkan pemahaman yang lebih mendalam tentang tingkah laku pembolehubah Java.

Polimorfisme dalam Java

Polymorphism ialah perkataan Greek yang bermaksud "banyak bentuk" dan merupakan konsep asas OOP. Ia membenarkan objek daripada jenis yang berbeza untuk dianggap sebagai objek superjenis biasa, membolehkan kod yang lebih fleksibel dan boleh digunakan semula ditulis. Di Jawa, polimorfisme dicapai melalui pewarisan, antara muka dan kaedah mengatasi.

Contoh

Jom lihat contoh

class Animal {
   void sound() {
     System.out.println("The animal makes a sound");
   }
}
class Cat extends Animal {
   @Override
   void sound() {
      System.out.println("The cat meows");
   }
}
public class Main {
   public static void main(String[] args) {
      Animal myAnimal = new Cat();
      myAnimal.sound();
   }
}
Salin selepas log masuk

Output

The cat meows
Salin selepas log masuk

Dalam senario ini, myAnimal ialah pembolehubah rujukan Haiwan yang menunjuk ke objek Kucing. Apabila kaedah sound() dipanggil pada myAnimal, versi dalam kelas Cat dipanggil, bukan versi dalam kelas Animal. Ini adalah polimorfisme, di mana kaedah yang akan dipanggil ditentukan oleh jenis objek sebenar, bukan jenis rujukan.

Penggantian kaedah ialah bentuk polimorfisme khusus dalam Java, di mana subkelas menyediakan pelaksanaan khusus bagi kaedah yang ditakrifkan dalam superclassnya. Kaedah dalam subkelas mesti mempunyai nama, jenis pulangan dan parameter yang sama seperti kaedah dalam superclass.

Mengapa pembolehubah tidak mengikut polimorfisme dan mengatasi?

Mengapa pembolehubah tidak mengikut polimorfisme dan mengatasi? Tidak seperti kaedah, pembolehubah dalam Java tidak mengikut konsep polimorfisme dan overriding. Perbezaan ini berpunca daripada perbezaan asas dalam cara kaedah dan pembolehubah wujud dan beroperasi dalam objek

Di Java, pembolehubah contoh tergolong dalam contoh kelas, yang bermaksud setiap tika mempunyai salinan pembolehubah contoh sendiri. Oleh itu, menukar nilai pembolehubah contoh dalam satu objek tidak menjejaskan objek lain dalam kelas yang sama.

Kaedah, sebaliknya, tergolong dalam kelas itu sendiri dan bukan kepada mana-mana contoh tertentu. Ini bermakna kaedah, tidak seperti pembolehubah, tidak mempunyai salinan berasingan untuk setiap objek kelas.

Contoh

Mari kita pergi ke contoh sebelumnya, tetapi kali ini tambahkan pembolehubah contoh:

class Animal {
   String sound = "The animal makes a sound";
   void makeSound() {
      System.out.println(sound);
   }
}
class Cat extends Animal {
   String sound = "The cat meows";
   @Override
   void makeSound() {
      System.out.println(sound);
   }
}
public class Main {
   public static void main(String[] args) {
      Animal myAnimal = new Cat();
      myAnimal.makeSound();
      System.out.println(myAnimal.sound);
   }
}
Salin selepas log masuk

Output

The cat meows
The animal makes a sound
Salin selepas log masuk

Dalam kod ini, myAnimal ialah rujukan Haiwan yang menunjuk ke objek Kucing. Panggilan kaedah makeSound() pada myAnimal akan mencetak "The cat meows", tetapi baris System.out.println(myAnimal.sound) akan mencetak "The Animalmakes a sound". Mengapa ini berlaku? Memandangkan kaedah mengikuti polimorfisme, kaedah makeSound() dalam kelas Cat dilaksanakan. Walau bagaimanapun, oleh kerana pembolehubah tidak mengikut polimorfisme, "pembolehubah bunyi" daripada kelas Haiwan digunakan

Tingkah laku ini disebabkan oleh prinsip penyembunyian yang berubah-ubah. Jika pembolehubah dalam subkelas mempunyai nama yang sama dengan pembolehubah dalam kelas supernya, pembolehubah subkelas menyembunyikan pembolehubah kelas super

Ini tidak bermakna pembolehubah kelas super telah ditindih. Kedua-dua pembolehubah masih wujud secara bebas, dan pembolehubah yang digunakan ditentukan oleh jenis rujukan, bukan jenis objek sebenar. Itulah sebabnya apabila kita mengakses pembolehubah bunyi melalui rujukan Haiwan, kita mendapat nilai bunyi daripada kelas Haiwan dan bukannya kelas Kucing.

Penutup pembolehubah dan persembunyian berubah

Di Java, pembolehubah tidak dipengaruhi oleh kaedah seperti mengatasi. Sebaliknya, mereka mengikuti prinsip penyembunyian berubah-ubah. Terdapat perbezaan asas antara penyembunyian pembolehubah dan kaedah mengatasi:

  • Method Overriding - Dalam overriding, subkelas menyediakan pelaksanaan berbeza bagi kaedah yang telah ditakrifkan dalam superclassnya. Keputusan kaedah untuk memanggil adalah berdasarkan jenis objek sebenar, dan bukannya jenis rujukan, yang membolehkan polimorfisme.

  • Variable Hiding - Dalam penyembunyian pembolehubah, jika pembolehubah dalam subkelas mempunyai nama yang sama dengan pembolehubah dalam superclassnya, pembolehubah subclass akan menyembunyikan pembolehubah superclass. Keputusan pembolehubah yang hendak digunakan adalah berdasarkan jenis rujukan, bukan jenis objek sebenar.

Prinsip ini berpunca daripada fakta bahawa kaedah mewakili tingkah laku, manakala pembolehubah mewakili keadaan. Tingkah laku boleh menjadi polimorfik dan ditindih, membenarkan jenis objek yang berbeza mempunyai kelakuan yang berbeza. Sebaliknya, keadaan yang diwakili oleh pembolehubah tergolong dalam contoh tertentu dan bukan polimorfik.

Kesimpulan

Ringkasnya, memahami sebab pembolehubah dalam Java tidak mengikut polimorfisme dan mengatasi boleh memberikan cerapan penting tentang cara Java berfungsi. Pengetahuan ini penting untuk pengaturcara Java untuk mengelakkan salah faham dan ralat apabila menggunakan warisan dan polimorfisme

Atas ialah kandungan terperinci Pembolehubah dalam Java tidak mengikut polimorfisme dan mengatasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka? Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka? Mar 17, 2025 pm 05:35 PM

Kelas kelas Java melibatkan pemuatan, menghubungkan, dan memulakan kelas menggunakan sistem hierarki dengan bootstrap, lanjutan, dan pemuat kelas aplikasi. Model delegasi induk memastikan kelas teras dimuatkan dahulu, yang mempengaruhi LOA kelas tersuai

Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu? Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu? Mar 17, 2025 pm 05:44 PM

Artikel ini membincangkan pelaksanaan caching pelbagai peringkat di Java menggunakan kafein dan cache jambu untuk meningkatkan prestasi aplikasi. Ia meliputi persediaan, integrasi, dan faedah prestasi, bersama -sama dengan Pengurusan Dasar Konfigurasi dan Pengusiran PRA Terbaik

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas? Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas? Mar 17, 2025 pm 05:43 PM

Artikel ini membincangkan menggunakan JPA untuk pemetaan objek-relasi dengan ciri-ciri canggih seperti caching dan pemuatan malas. Ia meliputi persediaan, pemetaan entiti, dan amalan terbaik untuk mengoptimumkan prestasi sambil menonjolkan potensi perangkap. [159 aksara]

Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan? Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan? Mar 17, 2025 pm 05:46 PM

Artikel ini membincangkan menggunakan Maven dan Gradle untuk Pengurusan Projek Java, membina automasi, dan resolusi pergantungan, membandingkan pendekatan dan strategi pengoptimuman mereka.

Bagaimanakah saya membuat dan menggunakan perpustakaan Java Custom (fail JAR) dengan pengurusan versi dan pergantungan yang betul? Bagaimanakah saya membuat dan menggunakan perpustakaan Java Custom (fail JAR) dengan pengurusan versi dan pergantungan yang betul? Mar 17, 2025 pm 05:45 PM

Artikel ini membincangkan membuat dan menggunakan perpustakaan Java tersuai (fail balang) dengan pengurusan versi dan pergantungan yang betul, menggunakan alat seperti Maven dan Gradle.

See all articles