摸索 接口能產(chǎn)生對(duì)象嗎

          Posted on 2007-09-29 11:23 古典哈尼 閱讀(452) 評(píng)論(2)  編輯  收藏 所屬分類: 好文章

          奇怪 好奇怪  好好奇怪  特別奇怪啊

          前幾天剛把JAVA的基本語(yǔ)法看完,今天看到了SERVLET  痛苦 傷心 難過啊  JAVA的知識(shí)真的紛繁而多雜

          今天遇見一個(gè)問題 關(guān)于借口的產(chǎn)生對(duì)象 
          protected void service(HttpServletRequest req,
                                 HttpServletResponse resp) throws ServletException,
                                 java.io.IOException
          我們需要寫的一個(gè)函數(shù),可奇怪的是在查看文檔時(shí)發(fā)現(xiàn)HttpServletRequest  HttpServletResponse 全是接口,借口怎么能產(chǎn)生對(duì)象呢?很奇怪的事情,在BAIDU搜也沒有什么具體的內(nèi)容有的說是默認(rèn)產(chǎn)生對(duì)子類對(duì)象的引用在群里問也無果
          后來看到文檔上說:Receives standard HTTP requests from the public service method and dispatches them to the doXXX methods defined in this class. This method is an HTTP-specific version of the Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) method. There's no need to override this method.
          又有個(gè)高手告訴我是容器做的工作

          后來又看到一句代碼
          Enumeration e=getInitParameterNames();其中Enumeration也是一個(gè)接口INTERFACE 于是更加奇怪了,如果說上邊的是容器默認(rèn)做出的一些事情,那這個(gè)簡(jiǎn)直就是赤裸裸的踐踏JAVA編程規(guī)則嘛@  于是不停的查看幾個(gè)相關(guān)類的文檔,.無果
          后來突然想到 孫鑫在JAVA無難事里說的把子類對(duì)象賦給父類的例子,于是思考 把焦點(diǎn)放在賦值的等號(hào)的右邊,右邊是一個(gè)可以返回一個(gè)實(shí)現(xiàn)左邊借口類型的對(duì)象,于是編寫了一個(gè)簡(jiǎn)單的測(cè)試代碼


          abstract interface aaa
          {
             public abstract void paint();
          }

           

          public class test implements aaa
          {  
             public void paint()
             {
              System.out.println("object test is execute!!");
             }
             public test getInterface()//返回一個(gè)TEST對(duì)象,即一個(gè)實(shí)現(xiàn)了AA接口的對(duì)象
             { test aa=new test();
              return aa;
             }
           
              public static void main(String[] args)
              { test b=new test();
                aaa e=b.getInterface();
               e.paint();
           
              }
          }

          運(yùn)行結(jié)果是:OBJECT TEST IS EXECUTE!

          可以看出實(shí)際上定義的是一個(gè)TEST的對(duì)象,因?yàn)檎{(diào)用的是實(shí)現(xiàn)類的PAINT函數(shù),而把得到的一個(gè)TEST對(duì)象的引用傳給E 實(shí)際上產(chǎn)生了一個(gè)TEST對(duì)象,已經(jīng)被默認(rèn)的轉(zhuǎn)換了

          菜鳥我,也不知道對(duì)不對(duì) 有老大給些建議和意見啊  崩潰啊
          順便問下有沒有SERVLET的一個(gè)好的視頻啊
          THANKS  


          ps:剛剛看到這么一句話,有些借口的實(shí)現(xiàn)類是由SERVLET引擎提供的,估計(jì)用上邊的原理沒法解釋的都能用這句話來糊弄過去

          Feedback

          # re: 摸索 接口能產(chǎn)生對(duì)象嗎  回復(fù)  更多評(píng)論   

          2007-09-29 19:02 by Unmi
          這就是面向接口的編程,如果你再細(xì)心一點(diǎn),可以發(fā)現(xiàn)每個(gè)接口在運(yùn)行時(shí)都對(duì)應(yīng)一個(gè)具體實(shí)現(xiàn)類,像Servlet的接口都是由Servlet容器實(shí)現(xiàn)的,一般對(duì)應(yīng)的類名 xxxImpl或 xxxWraper

          # re: 摸索 接口能產(chǎn)生對(duì)象嗎[未登錄]  回復(fù)  更多評(píng)論   

          2007-09-30 08:16 by 古典哈尼
          有這幾個(gè)類,這些就是引擎實(shí)現(xiàn)的類?

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 越西县| 土默特右旗| 包头市| 甘谷县| 双辽市| 嘉定区| 泽州县| 汤阴县| 城步| 都昌县| 越西县| 张家口市| 广昌县| 苍溪县| 县级市| 达尔| 天水市| 阳城县| 法库县| 永安市| 闸北区| 沿河| 万源市| 宁乡县| 罗山县| 兰坪| 甘洛县| 聊城市| 青浦区| 类乌齐县| 东乡族自治县| 都安| 双牌县| 龙胜| 嘉兴市| 洛川县| 遂昌县| 大新县| 和龙市| 阳山县| 忻州市|