Saya percaya semua orang tahu bahwa kata kunci baru Java adalah instantiasi objek. Ya, itu juga mengalokasikan ruang memori untuk objek baru.
Misalnya, dalam kasus seperti mydate baru (22, 7, 1964), penyelesaiannya membutuhkan empat bagian:
satu. Alokasikan ruang memori untuk objek baru dan simpan mydate ke tumpukan.
dua. Lakukan inisialisasi tampilan
tiga. Jalankan konstruktor. Parameter braket dalam metode baru diteruskan ke konstruktor, dan nilai objek diterbitkan.
Empat. Variabel ini ditugaskan sebagai referensi ke objek baru dalam memori heap
Dalam istilah Layman, operasi baru Anda sebenarnya menambahkan objek baru ke tumpukan memori dan menginisialisasi objek baru melalui metode konstruktor dan menyimpan referensi ke objek di tumpukan.
Di sini saya memiliki kasus yang mudah dimengerti:
public class Pet {protected bean be = this.b();public bean b(){return new bean();}} public void test(){be.setName("Zhang San");}public void test2(){System.out.println(be.getName());}public static void main(String[] args) {People pe = new People (); pe.test (); pe.test2 ();} Kelas orang tua dan kelas anak. Tetapkan nilai ke nama melalui tes. Nilai output test2 akan menemukan bahwa tes output ditetapkan untuk nama. Karena ketika menjalankan metode utama, program ini akan pertama -tama mengkompilasi kelas induk dan membuat objek BE, sehingga referensi dalam subkelas adalah objek yang sama, tetapi jika dimodifikasi ke kode berikut:
tes public void () {bean be = new bean (); be.setname ("zhang san");} public void test2 () {System.out.println (be.getName ());} public static void main (string [] args) {people pe = orang baru (); pe.test (); Dalam tes, saya baru menjadi objek, dan outputnya adalah nol, karena referensi yang mereka simpan di tumpukan memori berbeda. Dalam proses pengkodean yang sebenarnya, yang terbaik adalah menulis objek dengan lebih banyak referensi di kelas induk, mewarisi subclass, atau menulisnya ke dalam mode malas kanan tunggal Java:
kelas publik danli1class {// 1. Untuk mengimplementasikan model single-laba, Anda harus memodifikasi metode konstruksinya () Private danli1class () {} // 2. Pertama, instantiate instance dari diri Anda sendiri private static danli1class dan1 = new Danli1class (); // 3. Untuk memastikan bahwa program lain mengakses instance objek HUA dari contoh ini, Anda perlu mendefinisikan metode statis statis danli1class danli1 () {return dan1;}} Ini akan menyimpan penggunaan memori dan memungkinkan objek untuk digunakan kembali, jadi mengapa tidak melakukannya?