Rumah > Java > javaTutorial > Mengapa Java Membenarkan Memanggil Kaedah Statik Menggunakan Rujukan Contoh?

Mengapa Java Membenarkan Memanggil Kaedah Statik Menggunakan Rujukan Contoh?

Patricia Arquette
Lepaskan: 2024-12-11 06:47:17
asal
215 orang telah melayarinya

Why Does Java Allow Calling Static Methods Using Instance References?

Mengapa Java Membenarkan Memanggil Kaedah Statik melalui Instance

Walaupun merupakan amalan yang kelihatan tidak masuk akal, pengkompil Java membenarkan memanggil kaedah statik melalui rujukan contoh. Pertimbangkan kod berikut:

Thread thread = new Thread();
int activeCount = thread.activeCount();
Salin selepas log masuk

Walaupun kod ini menghasilkan amaran pengkompil, ia tidak mengakibatkan ralat. Ini kerana pereka bahasa Java secara tidak sengaja membenarkan tingkah laku ini semasa reka bentuk bahasa.

Sebab Kesilapan

Punca kesilapan ini mungkin disebabkan oleh faktor berikut :

  • Keputusan reka bentuk bahasa awal: Kaedah statik wujud sebelum kaedah contoh dalam Java, dan reka bentuk awal mungkin tidak mempertimbangkan secukupnya kemungkinan memanggil kaedah statik melalui tika.
  • Isu keserasian warisan: Menukar tingkah laku ini akan memecahkan kod sedia ada dan memerlukan refactor kod besar-besaran, menjadikannya tidak praktikal untuk membetulkan dalam versi kemudian Java.

Implikasi Gelagat ini

Walaupun dibenarkan secara teknikal, memanggil kaedah statik melalui kejadian dianggap sangat mengelirukan. Ia mematahkan jangkaan bahawa kaedah contoh beroperasi pada data tika, manakala kaedah statik ialah kaedah peringkat kelas.

Tingkah laku ini juga bercanggah dengan larangan Java untuk mengakses ahli statik menggunakan rujukan contoh yang mungkin tidak dimulakan. Walaupun hanya menggunakan jenis pembolehubah yang diisytiharkan, panggilan kaedah statik dibenarkan, menunjukkan ketidakkonsistenan dalam reka bentuk bahasa.

Pendekatan Alternatif

Bahasa lain, seperti C# , jangan benarkan kelakuan ini. Sebaliknya, mereka memerlukan panggilan kaedah statik yang layak secara eksplisit dengan nama kelas, memastikan ia jelas apabila kaedah statik sedang digunakan:

Foo.Bar(); // Explicit call to static method of Foo class
Salin selepas log masuk

Kesimpulan

Walaupun sedang pengawasan dalam reka bentuk bahasa Java, memanggil kaedah statik melalui contoh kekal sebagai amalan yang sah tetapi sangat tidak digalakkan. Ia boleh membawa kepada kod yang mengelirukan dan menyukarkan untuk mengenal pasti niat sebenar panggilan kaedah. Oleh itu, adalah dinasihatkan untuk mengelakkan penggunaan ini dan mengkonfigurasi IDE untuk menganggapnya sebagai ralat untuk memastikan kejelasan dan ketepatan kod.

Atas ialah kandungan terperinci Mengapa Java Membenarkan Memanggil Kaedah Statik Menggunakan Rujukan Contoh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan