posts - 12,  comments - 0,  trackbacks - 0
          訪問控制符:public 、private、protected、friendly
          public包內(nèi)包外均可訪問。
          private只有本類可訪問。
          protected針對繼承而使用的:1、包內(nèi)繼承,因?yàn)樵诎鼉?nèi),聲明為protected不影響它本來的friendly權(quán)限。
                                     2、包外繼承,必須聲明為protected。
          派生類可以訪問基類的protected成員。
          注意不可將類設(shè)成private(那樣會使除類之外的其他東西都不能訪問它),也不能設(shè)成protected。因此,我們現(xiàn)在對于類的訪問只有兩個(gè)選擇:“友好的”或者public。若不愿其他任何人訪問那個(gè)類,可將所有構(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)用其方法。
              }

          }


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



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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 宝鸡市| 沙田区| 灌云县| 北票市| 仁布县| 芷江| 杭州市| 嘉祥县| 平乐县| 阳春市| 沈丘县| 清新县| 揭西县| 保靖县| 延寿县| 达日县| 荆门市| 清原| 宾阳县| 浦江县| 彰化市| 滕州市| 东丽区| 南城县| 两当县| 台湾省| 磴口县| 永城市| 息烽县| 松原市| 泰州市| 南澳县| 陇川县| 庄浪县| 吉木乃县| 崇信县| 白玉县| 会昌县| 苏州市| 鄂托克旗| 石景山区|