1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. sun認證考試:java子對象創建過程

        時間:2020-09-21 12:32:01 SUN認證 我要投稿

        sun認證考試:java子對象創建過程

          Java 創建子類對象的過程:

        sun認證考試:java子對象創建過程

          public class F511

          {

          private int ff=100;

          protected int m=880;

          F511()

          {

          m=add(8);

          }

          int add(int i){

          return i+m;

          }

          public static void main(String args[]){

          F511 f=new F511();

          System.out.println("f="+f.m);

          S511 s=new S511();

          System.out.println("s="+s.m+" t= "+s.t);

          }

          }

          class S511 extends F511

          {

          protected int ss=111;

          S511(){

          m+=ss;

          t=add(9);

          }

          int add(int i){

          return i*ss;

          }

          }

          大家自己先分析一下運算后的結果,然后在看下面結果:

          答案是:f=888

          m=111

          通過這個例子可以很好的學習到java繼承父類,運行的`先后順序和機制。

          現在我添加一下東西到程序中,方便我們分析:

          public class F511

          {

          private int ff=100;

          protected int m=880;

          protected int t=880;

          static int k=0;

          F511()

          {

          System.out.println("this is parents = "+m);

          m=add(8);

          System.out.println("this is parents m=add(8) = "+m);

          }

          int add(int i){

          System.out.println("k= "+k);

          k++;

          return i+m;

          }

          public static void main(String args[]){

          F511 f=new F511();

          System.out.println("f="+f.m);

          S511 s=new S511();

          System.out.println("s="+s.m+" t= "+s.t);

          }

          }

          class S511 extends F511

          {

          protected int ss=111;

          static int j=0;

          S511(){

          System.out.println("this in childe print parents = "+m);

          m+=ss;

          t=add(9);

          }

          int add(int i){

          System.out.println("j= "+j);

          j++;

          System.out.println("ss= "+ss);

          return i*ss;

          }

          }

          運行結果是:

          this is parents = 880

          k= 0

          this is parents m=add(8) = 888

          f=888

          this is parents = 880

          j= 0

          ss= 0

          this is parents m=add(8) = 0

          this in childe print parents = 0

          j= 1

          ss= 111

          s=111 t= 999

          輸出完成 (耗時 0 秒) - 正常終止

          從這里可以看出,子類繼承父類后。在創建子類對象時,首先初始化父類的無參構造函數F511()執行其中的方法。由于父類無參構造方法中add()方法被子類重寫了,因此父類調用子類的add()方法,這就是為什么會輸出j=0,又由于父類中沒有ss變量,所以ss默認就為0.所以父類初始化后,m=0了。然后才在初始化子類無參構造函數S511()。由于m變成了0,所m+=ss,就為111了。這就是創建子類,函數初始化的過程。

          所以,在構造器中有應避免調用可能被改寫的方法,不然上上面會出現某些意想不到的結果。

        【sun認證考試:java子對象創建過程】相關文章:

        Sun java認證考試答案11-12

        Sun Java認證考試科目10-03

        sun java認證考試介紹10-03

        sun java認證考試報考指南10-03

        SUN JAVA認證介紹05-13

        Sun java認證考試真題答案07-19

        Sun認證Java開發員考試介紹10-25

        Sun Java認證考試教材教輔10-03

        怎樣獲得Sun Java認證10-01

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>