cari

Rumah  >  Soal Jawab  >  teks badan

java - 当在子类中声明一个父类中存在的变量后,自动调用的父类构造函数不起作用。

高洛峰高洛峰2802 hari yang lalu559

membalas semua(3)saya akan balas

  • ringa_lee

    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

    balas
    0
  • 黄舟

    黄舟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.

    balas
    0
  • PHP中文网

    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...

    balas
    0
  • Batalbalas