Di Java, apabila berbilang rujukan digunakan untuk merujuk kepada objek yang sama, ia biasanya dirujuk sebagai "alias." Isu dengan alias ialah apabila pengguna menulis kepada objek tertentu dan pemilik, untuk beberapa rujukan lain , tidak mengharapkan objek itu berubah. Di sini, kod yang termasuk aliasing boleh mengelirukan dengan cepat, dan sangat membosankan untuk nyahpepijat juga. Mari kita lihat cara Java Alias berfungsi.
IKLAN Kursus Popular dalam kategori ini JAVA MASTERY - Pengkhususan | 78 Siri Kursus | 15 Ujian Olok-olokMulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Seperti yang telah kita bincangkan sebelum ini, aliasing berlaku apabila berbilang rujukan dikaitkan dengan objek yang sama. Ini juga bermakna terdapat beberapa alias untuk lokasi yang boleh diubah suai dan alias ini mempunyai beberapa jenis.
Mari kita ambil contoh. x dan y ialah dua nama pembolehubah yang mempunyai dua jenis, X dan Y. Y memanjangkan X.
Y[] y = new Y[10]; X[] x = y; x[0] = new X(); Y[0].func1();
Dalam ingatan juga, kedua-duanya menunjuk ke lokasi yang sama.
Lokasi memori yang ditunjuk ditunjuk oleh x dan juga y. Walau bagaimanapun, objek sebenar yang disimpan memilih kaedah untuk dipanggil semasa masa jalan.
Mari kita lihat contoh lain.
Rectangle b1 = new Rectangle (0, 0, 50, 150); Rectangle b2 = b1;
Kedua-dua b1 dan b2 merujuk kepada objek yang sama, atau kita boleh mengatakan bahawa objek yang diberikan mempunyai dua nama, seperti b1 dan b2. Sama seperti orang yang mempunyai dua nama, objek juga boleh mempunyai dua nama.
Apabila dua pembolehubah beralias hadir, perubahan yang menyebabkan satu pembolehubah turut mencerminkan yang lain, seperti ditunjukkan di bawah.
System.out.println (b2.width); b1.grow (40, 40); System.out.println (b2.width);
Apabila melaksanakan kod, anda akan melihat bahawa perubahan yang telah disebabkan pada satu segi empat tepat telah berlaku dalam segi empat tepat kedua juga. Ini adalah salah satu perkara utama yang perlu diberi perhatian untuk Alias di Jawa.
Berikut ialah beberapa contoh program pada Java Alias.
Kod:
//class X class X { //function 1 public void func1() { System.out.println("called sample function 1"); } } //Class Y that extends the class X class Y extends X { //function 1 public void func1() { System.out.println("called sample function 1"); } //function 2 public void func2() { System.out.println("called sample function 2"); } } //main class public class AliasExample { //main method public static void main(String[] args) { Y[] y = new Y[10]; X[] x = y; x[0] = new X(); y[0].func1(); } }
Output:
Bagaimana ini berlaku? Apa yang perlu diubah? Adakah mungkin untuk menyelesaikannya?
Ya!! Satu-satunya sebab untuk pengecualian ini ialah Java menguruskan alias semasa runtime. Hanya semasa masa larian ia akan dapat mengetahui bahawa yang pertama harus menjadi objek Y dan bukannya X.
//class X class X { //function 1 public void func1() { System.out.println("called sample function 1"); } } //Class Y that extends the class X class Y extends X { //function 1 public void func1() { System.out.println("called sample function 1"); } //function 2 public void func2() { System.out.println("called sample function 2"); } } //main class public class AliasExample { //main method public static void main(String[] args) { Y[] y = new Y[10]; X[] x = y; x[0] = new Y(); y[0].func1(); } }
Output:
Kod:
//main class public class AliasExample { //main method public static void main(String[] args) { //create two different arrays with same value int a= 87; int b=87; //checks whether a and b are equal System.out.println(a == b); //assign b equal to a b=a; //checks whether a and b are equal System.out.println(a == b); } }
Output:
Apakah yang akan berlaku jika dua tatasusunan, a dan b, digunakan dan bukannya pembolehubah integer?
//main class public class AliasExample { //main method public static void main(String[] args) { //create two different arrays with same value int []a = {81, 54, 83}; int []b = {81, 54, 83}; //checks whether a and b are equal System.out.println(a == b); //assign b equal to a b=a; //checks whether a and b are equal System.out.println(a == b); } }
Output:
Dalam program ini, dua tatasusunan, a dan b, dicipta dalam langkah pertama. Kemudian, sama dengan program di atas, a dan b semak sama ada ia sama. Semasa melaksanakan kod, dapat dilihat bahawa output untuk semakan pertama adalah palsu, dan output untuk semakan kedua adalah benar. Ini kerana Java Alias berfungsi.
Kelemahan alias ialah apabila pengguna menulis pada objek tertentu dan pemilik, untuk beberapa rujukan lain, tidak meneka objek itu akan berubah.
Atas ialah kandungan terperinci Alias Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!