<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      咖啡貓

      導(dǎo)航

      為什么使用內(nèi)部類(lèi)

      我們知道,java提供了一種語(yǔ)言特性:內(nèi)部類(lèi)。一開(kāi)始接觸內(nèi)部類(lèi),感覺(jué)這種機(jī)制確實(shí)很神奇,但是轉(zhuǎn)念一想似乎這種機(jī)制又有些多余。因?yàn)槲覀兺耆梢杂猛獠款?lèi)的形式去實(shí)現(xiàn)和內(nèi)部類(lèi)相同的功能,比如我的上一篇文章中的工廠(chǎng)模式(http://blog.csdn.net/hmzdbql/article/details/7691055)。那么內(nèi)部類(lèi)到底有什么好處呢?

      我們?cè)O(shè)想這樣一種情形,如果有一個(gè)類(lèi)A,一個(gè)類(lèi)B他們分別實(shí)現(xiàn)了不同的功能(注意這個(gè)時(shí)候的A,B類(lèi)都是實(shí)體類(lèi)而不是抽象類(lèi)或者接口)。現(xiàn)在我們需要寫(xiě)一個(gè)類(lèi)C,它需要使用類(lèi)A類(lèi)B中的全部功能,也就是我們通過(guò)類(lèi)C可以直接使用類(lèi)A和類(lèi)B中的方法。想想應(yīng)該如何去實(shí)現(xiàn)呢?你或許想到了繼承,的確繼承是一個(gè)很好的方式。但是很快你就會(huì)發(fā)現(xiàn)悲?。簀ava不支持多繼承...類(lèi)C不可能以繼承的方式去使用類(lèi)A和類(lèi)B中的所有方法。似乎沒(méi)轍了...其實(shí)不然,這個(gè)時(shí)候內(nèi)部類(lèi)就派上了用場(chǎng)??聪旅娴拇a:

      class A
      {
          public void f()
          {
              // 方法內(nèi)容
          }
      }
      
      class B
      {
          public void g()
          {
              // 方法內(nèi)容
          }
      }
      
      class C extends A
      {
          B getB()
          {
              return new B()
              {
                //可以在這里擴(kuò)展B類(lèi)的方法    
              };
          }
      }
      
      public class Test
      {
          public static void main(String[] args)
          {
              C c = new C();
              c.f();// 調(diào)用了類(lèi)A的f()方法
              c.getB().g();// 調(diào)用了類(lèi)B的g()方法
              
          }
      }

      通過(guò)這個(gè)例子我們看到C類(lèi)實(shí)現(xiàn)了對(duì)A,B類(lèi)方法的完全集成。我們只需要使用C類(lèi)便可以使用A,B類(lèi)中的所有方法。換言之,也就是我們使用內(nèi)部類(lèi)實(shí)現(xiàn)了多繼承....

       

      同時(shí)使用內(nèi)部類(lèi)我們還可以得到其他一些額外的好處:我們發(fā)現(xiàn)在內(nèi)部類(lèi)中我們可以擴(kuò)展B類(lèi)的方法,這無(wú)疑是一個(gè)很大的好處。
      當(dāng)然,上面的方式也可以采用別的方式實(shí)現(xiàn),而不使用內(nèi)部類(lèi)。比如我們?cè)贑類(lèi)中添加方法getA();getB()便可以分別得到A,B對(duì)象。也可以實(shí)現(xiàn)同樣的效果。但是假如我們遇到了一個(gè)必須使用多繼承才能解決的問(wèn)題,內(nèi)部類(lèi)無(wú)疑是首選也是必選。從另外一個(gè)方面,我們知道C++支持多繼承,而java不支持。很多時(shí)候會(huì)造成不便,有了內(nèi)部類(lèi)的機(jī)制支持同樣可以實(shí)現(xiàn)多繼承,算是java的另一種特性所在吧。

       

      posted on 2015-05-08 18:18  咖啡貓1292  閱讀(259)  評(píng)論(0)    收藏  舉報(bào)

      主站蜘蛛池模板: 国产一区二区三区我不卡| 国产精品无码av不卡| 久久精品国产亚洲av品| 日韩精品国产二区三区| 亚洲日本国产精品一区| 国产亚洲精品久久久久久久软件| 精品亚洲综合一区二区三区| 亚洲中文字幕无码一区日日添| 亚洲蜜臀av乱码久久| 亚洲无人区一码二码三码| 亚洲女人天堂| 九台市| 最新国产精品好看的精品| 亚洲欧美日韩综合久久久| 浮妇高潮喷白浆视频| 亚洲乱码一二三四区| 亚洲一区中文字幕人妻| 抚州市| 边添小泬边狠狠躁视频| 无码抽搐高潮喷水流白浆| 无码人妻精品一区二区三区东京热 | 国产肥妇一区二区熟女精品| 国产精品国产三级国产a| 亚洲最大成人在线播放| 国产区精品福利在线熟女| 久久精品国产99久久六动漫| 99久久国产综合精品成人影院| 自拍偷拍第一区二区三区| 亚洲成A人片在线观看无码不卡| 免费无码又爽又刺激网站直播| 亚洲国产熟女一区二区三区| 国产精品高清一区二区三区| 久久综合色一综合色88欧美| 亚洲一区二区三区十八禁| 成年无码av片在线蜜芽| 亚洲香蕉av一区二区蜜桃| 国内精品免费久久久久电影院97| 国产亚洲精品久久久久久青梅| 国产精品一品二区三四区| 精品乱码一区二区三四五区| 亚洲中文字幕在线二页|