Rumah > Soal Jawab > teks badan
ringa_lee2017-04-18 10:48:33
Jujukan pelaksanaan adalah seperti berikut:
1. super();
1.1. super.i = 7;
1.2. this.setI(20) => this.i = 60;
1.3. System.out.println("i from a is " + super.i) => 7;
2. this();
2.1. this.i = 10;
2.2. System.out.println("i from b is " + this.i) => 10;
A.i
dan B.i
kedua-duanya adalah pakej-peribadi, B.i
tidak mempunyai Override A.i
, kedua-duanya adalah bebas
A.setI
dan B.setI
kedua-duanya awam, B.setI
Override A.setI
, yang dipanggil A semasa pembinaan ialah B.setI
;
Pemulaan ahli B di luar pembina dilaksanakan selepas super()
B.i
mula-mula ditetapkan kepada 60 oleh B.setI
dalam super, dan kemudian ditetapkan kepada 10 oleh pemula ahli B;
Selepas memadamkan int i = 10;
dalam B, jika A dan B berada dalam pakej yang sama, B.setI
mengakses A.i
, dan tidak akan ada perubahan selepas A.i ditetapkan kepada 60 semasa super(), dan ia akan menjadi dicetak dua kali. Kedua-duanya adalah 60
黄舟2017-04-18 10:48:33
Jika saya mengisytiharkan ahli dalam subkelas yang telah wujud dalam kelas induk, adakah tiada ralat? Ia sekurang-kurangnya menjadi amaran.
Saya hanya boleh mengatakan bahawa soalan itu terlalu jahat. Tidak mustahil untuk menulis seperti ini dalam perkembangan sebenar Anda akan menggali lubang untuk diri sendiri.
PHP中文网2017-04-18 10:48:33
7.10
1. Pergi ke kaedah pembinaan A dan lengkapkan pembinaan parameter kosong Objek.
2.int I=7
3.setI(20) memanggil setI() subkelas Pada masa ini, I subkelas ialah 60, dan I kelas induk masih 7.
4.Cetak .i ini ialah 7 dalam kelas induk pada masa ini; (nota: pembolehubah bergantung pada pemanggil sebenar, ini ialah kelas induk semasa; kaedah ini dipanggil subkelas kerana ia telah diganti)
5.int I=10 menimpa 60 yang asal.
6, cetak ini.i Kali ini 10.
60.60
Nota: Jika anda memadamkan I subkelas, I kelas induk dipanggil secara lalai
3. Panggil setI subkelas dan berikannya kepada kelas induk. kelas induk berubah kepada 60.
5. Tiada penggantian pada masa ini, ini.i lalai untuk memanggil kelas yang saya warisi daripada kelas induk, iaitu 60.
Mengenai kepentingan Degbug...