posts - 12,  comments - 0,  trackbacks - 0
          訪問控制符:public 、private、protected、friendly
          public包內(nèi)包外均可訪問。
          private只有本類可訪問。
          protected針對繼承而使用的:1、包內(nèi)繼承,因為在包內(nèi),聲明為protected不影響它本來的friendly權(quán)限。
                                     2、包外繼承,必須聲明為protected。
          派生類可以訪問基類的protected成員。
          注意不可將類設(shè)成private(那樣會使除類之外的其他東西都不能訪問它),也不能設(shè)成protected。因此,我們現(xiàn)在對于類的訪問只有兩個選擇:“友好的”或者public。若不愿其他任何人訪問那個類,可將所有構(gòu)建器設(shè)為private,這樣除你之外,沒有可以用類創(chuàng)建的了。而你可以使用static成員創(chuàng)建對象。
          package com.access.external;

          class Soup{
              private Soup(){//構(gòu)造函數(shù)聲明為private,其它類不能用此構(gòu)造函數(shù)創(chuàng)建對象;
                  System.out.println("sffewe");
              }
              public static Soup makSoup(){//其它類可通過makSoup來創(chuàng)建對象;
                  return new Soup();
              }
              private static Soup ps1 = new Soup();//自己創(chuàng)建對象;
              public static Soup access(){//返回對象的引用。
                  return ps1;
              }
              public void f(){}
          }

          class Sandwich{
              void f(){
                  new Lunch();
              }
          }

          public class Lunch {
              void test(){
                  //Soup priv1 = new Soup();
                  Soup priv2 = Soup.makSoup();
                  Sandwich f1 = new Sandwich();
                  Soup.access().f();//不創(chuàng)建對象,但通過Soup中返回的對象引用調(diào)用其方法。
              }

          }


          該方法返回一個句柄,它指向類Soup的一個對象。
          Soup類向我們展示出如何通過將所有構(gòu)建器都設(shè)為private,從而防止直接創(chuàng)建一個類。請記住,假若不明確地至少創(chuàng)建一個構(gòu)建器,就會自動創(chuàng)建默認(rèn)構(gòu)建器(沒有自變量)。若自己編寫默認(rèn)構(gòu)建器,它就不會自動創(chuàng)建。把它變成private后,就沒人能為那個類創(chuàng)建一個對象。但別人怎樣使用這個類呢?上面的例子為我們揭示出了兩個選擇。第一個選擇,我們可創(chuàng)建一個static方法,再通過它創(chuàng)建一個新的Soup,然后返回指向它的一個句柄。如果想在返回之前對Soup進(jìn)行一些額外的操作,或者想了解準(zhǔn)備創(chuàng)建多少個Soup對象(可能是為了限制它們的個數(shù)),這種方案無疑是特別有用的。
          第二個選擇是采用“設(shè)計方案”(Design Pattern)技術(shù),本書后面會對此進(jìn)行詳細(xì)介紹。通常方案叫作“獨子”,因為它僅允許創(chuàng)建一個對象。類Soup的對象被創(chuàng)建成Soup的一個static private成員,所以有一個而且只能有一個。除非通過public方法access(),否則根本無法訪問它。



          posted on 2007-12-20 11:09 仰望者 閱讀(249) 評論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 泰安市| 黑水县| 泸溪县| 闵行区| 中江县| 正安县| 奉节县| 中方县| 武胜县| 龙岩市| 二连浩特市| 宁德市| 时尚| 兴文县| 托克托县| 达日县| 余干县| 镇宁| 阳信县| 鄂温| 辽阳县| 荆州市| 拉萨市| 外汇| 友谊县| 蕲春县| 汝州市| 阳春市| 德保县| 大方县| 金川县| 邵阳县| 会东县| 张掖市| 武邑县| 曲阳县| 白河县| 宁都县| 四平市| 久治县| 汤阴县|