我的漫漫程序之旅

          專注于JavaWeb開(kāi)發(fā)
          隨筆 - 39, 文章 - 310, 評(píng)論 - 411, 引用 - 0
          數(shù)據(jù)加載中……

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

          原題地址:點(diǎn)擊查看
          要求是寫(xiě)出結(jié)果,并說(shuō)明為什么。
          據(jù)回憶程序是這樣的:
          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);
              }

          }

          輸出結(jié)果是:3
          此題考查的是多態(tài).
          在這里是父類的引用指向子類的對(duì)象.
          父類的引用只能訪問(wèn)子類和父類共有的
          方法.
          這個(gè)程序我通過(guò)Eclipse和Debug程序觀察它的
          執(zhí)行順序是這樣的:
          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);
              }

          }


          現(xiàn)在將程序稍微改動(dòng)一下:
          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);
              }

          }


          這時(shí)輸出結(jié)果就是1了.
          因?yàn)楦割惖囊脽o(wú)法訪問(wèn)子類獨(dú)有的方法.

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


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 华宁县| 囊谦县| 高台县| 丹阳市| 微博| 宽甸| 新建县| 彝良县| 柏乡县| 屏南县| 滨州市| 镇沅| 平罗县| 塘沽区| 翼城县| 白山市| 家居| 九龙城区| 金平| 麻栗坡县| 老河口市| 卢湾区| 垣曲县| 达孜县| 乐清市| 女性| 牟定县| 项城市| 东乡| 南陵县| 广安市| 十堰市| 南郑县| 徐汇区| 大英县| 嘉峪关市| 余江县| 淮滨县| 资源县| 韶关市| 临泽县|