我的漫漫程序之旅

          專注于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 々上善若水々 閱讀(2098) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 晋城| 三亚市| 沂南县| 岳阳县| 海城市| 玛纳斯县| 尖扎县| 东乡| 峨眉山市| 赤壁市| 唐海县| 太仓市| 乌苏市| 崇阳县| 萨嘎县| 泸西县| 佛学| 喀喇沁旗| 同江市| 北辰区| 五台县| 平罗县| 禄劝| 肇东市| 衡水市| 观塘区| 山阳县| 双峰县| 铁力市| 尉犁县| 金门县| 滁州市| 旅游| 邵阳市| 白水县| 梅州市| 康马县| 北票市| 宣城市| 简阳市| 朝阳区|