我的漫漫程序之旅

          專注于JavaWeb開發
          隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
          數據加載中……

          上海群碩軟件公司的一道Java筆試題

          原題地址:點擊查看
          要求是寫出結果,并說明為什么。
          據回憶程序是這樣的:
          package org;

          public class Test
          {

              
          public static void main(String[] args)
              
          {
                  A a 
          = new B();
                  a.print();
              }


          }


          class A
          {
              
          private int i = 1;
              
          public A()
              
          {
                  
          int i = 2;
              }

              
              
          public void print()
              
          {
                  System.out.println(
          "The result is:" + i);
              }

          }


          class B extends A
          {
              
          private int i = 3;
              
              
          public B()
              
          {
                  
          int i = 6;
              }

              
              
          public void print()
              
          {
                  System.out.println(
          "The result is:" + i);
              }

          }

          輸出結果是:3
          此題考查的是多態.
          在這里是父類的引用指向子類的對象.
          父類的引用只能訪問子類和父類共有的
          方法.
          這個程序我通過Eclipse和Debug程序觀察它的
          執行順序是這樣的:
          package org;

          public class Test
          {

              
          public static void main(String[] args)
              
          {
                  A a 
          = new B();
                  a.print();
              }


          }


          class A
          {
              
          //3
              private int i = 1;
              
          //2
              public A()
              
          {
                  
          //4
                  int i = 2;
              }

              
              
          public void print()
              
          {
                  System.out.println(
          "The result is:" + i);
              }

          }


          class B extends A
          {
              
          //5
              private int i = 3;
              
          //1
              public B()
              
          {
                  
          //6
                  int i = 6;
              }

              
              
          public void print()
              
          {
                  System.out.println(
          "The result is:" + i);
              }

          }


          現在將程序稍微改動一下:
          package org;

          public class Test
          {

              
          public static void main(String[] args)
              
          {
                  A a 
          = new B();
                  a.print();
              }


          }


          class A
          {
              
          //3
              private int i = 1;
              
          //2
              public A()
              
          {
                  
          //4
                  int i = 2;
              }

              
              
          public void print()
              
          {
                  System.out.println(
          "The result is:" + i);
              }

          }


          class B extends A
          {
              
          //5
              private int i = 3;
              
          //1
              public B()
              
          {
                  
          //6
                  int i = 6;
              }

              
              
          public void print2()
              
          {
                  System.out.println(
          "The result is:" + i);
              }

          }


          這時輸出結果就是1了.
          因為父類的引用無法訪問子類獨有的方法.

          posted on 2007-12-09 15:54 々上善若水々 閱讀(2104) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 定兴县| 育儿| 大石桥市| 阿克苏市| 曲水县| 潍坊市| 英吉沙县| 广平县| 綦江县| 黑水县| 双桥区| 环江| 扶余县| 阿巴嘎旗| 新密市| 广元市| 苍山县| 邹城市| 华坪县| 建始县| 泉州市| 沙湾县| 资中县| 沂水县| 阜康市| 华池县| 海原县| 兴宁市| 西乌珠穆沁旗| 兴隆县| 宣城市| 镇沅| 石狮市| 红河县| 报价| 定兴县| 阜南县| 龙南县| 临朐县| 鹿邑县| 重庆市|