亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

類訪問

2019-11-18 12:10:04
字體:
來源:轉載
供稿:網友

  在java中,亦可用訪問指示符判定出一個庫內的哪些類可由那個庫的用戶使用。若想一個類能由客戶程序員調用,可在類主體的起始花括號前面某處放置一個public要害字。它控制著客戶程序員是否能夠創建屬于這個類的一個對象。
  
  為控制一個類的訪問,指示符必須在要害字class之前出現。所以我們能夠使用:
  
  public class Widget {
  
  也就是說,假若我們的庫名是mylib,那么所有客戶程序員都能訪問Widget——通過下述語句:
  
  import mylib.Widget;
  
  或者
  
  import mylib.*;
  
  然而,我們同時還要注重到一些額外的限制:
  
  (1) 每個編譯單元(文件)都只能有一個public類。每個編譯單元有一個公共接口的概念是由那個公共類表達出來的。根據自己的需要,它可擁有任意多個提供支撐的“友好”類。但若在一個編譯單元里使用了多個public類,編譯器就會向我們提示一條出錯消息。
  
  (2) public類的名字必須與包含了編譯單元的那個文件的名字完全相符,甚至包括它的大小寫形式。所以對于Widget來說,文件的名字必須是Widget.java,而不應是widget.java或者WIDGET.java。同樣地,假如出現不符,就會報告一個編譯期錯誤。
  
  (3) 可能(但并常見)有一個編譯單元根本沒有任何公共類。此時,可按自己的意愿任意指定文件名。
  
  假如已經獲得了mylib內部的一個類,預備用它完成由Widget或者mylib內部的其他某些public類執行的任務,此時又會出現什么情況呢?我們不希望花費力氣為客戶程序員編制文檔,并感覺以后某個時候也許會進行大手筆的修改,并將自己的類一起刪掉,換成另一個不同的類。為獲得這種靈活處理的能力,需要保證沒有客戶程序員能夠依靠自己隱藏于mylib內部的特定實施細節。為達到這個目的,只需將public要害字從類中剔除即可,這樣便把類變成了“友好的”(類僅能在包內使用)。
  
  注重不可將類設成PRivate(那樣會使除類之外的其他東西都不能訪問它),也不能設成protected(注釋④)。因此,我們現在對于類的訪問只有兩個選擇:“友好的”或者public。若不愿其他任何人訪問那個類,可將所有構建器設為private。這樣一來,在類的一個static成員內部,除自己之外的其他所有人都無法創建屬于那個類的一個對象(注釋⑤)。如下例所示:
  
  //: Lunch.java
  // Demonstrates class access specifiers.
  // Make a class effectively private
  // with private constrUCtors:
  
  class Soup {
   private Soup() {}
   // (1) Allow creation via static method:
   public static Soup makeSoup() {
    return new Soup();
   }
   // (2) Create a static object and
   // return a reference upon request.
   // (The "Singleton" pattern):
   private static Soup ps1 = new Soup();
   public static Soup access() {
    return ps1;
   }
   public void f() {}
  }
  
  class Sandwich { // Uses Lunch
   void f() { new Lunch(); }
  }
  
  // Only one public class allowed per file:
  public class Lunch {
   void test() {
    // Can't do this! Private constructor:
    //! Soup priv1 = new Soup();
    Soup priv2 = Soup.makeSoup();
    Sandwich f1 = new Sandwich();
    Soup.access().f();
   }
  } ///:~
  
 ?、埽簩嶋H上,Java 1.1內部類既可以是“受到保護的”,也可以是“私有的”,但那屬于非凡情況。第7章會具體解釋這個問題。
  
 ?、荩阂嗫赏ㄟ^從那個類繼續來實現。
  
  迄今為止,我們創建過的大多數方法都是要么返回void,要么返回一個基本數據類型。所以對下述定義來說:
  
  public static Soup access() {
  return psl;
  }
  
  它最開始多少會使人有些迷惑。位于方法名(access)前的單詞指出方法到底返回什么。在這之前,我們看到的都是void,它意味著“什么也不返回”(void在英語里是“虛無”的意思。但亦可返回指向一個對象的句柄,此時出現的就是這個情況。該方法返回一個句柄,它指向類Soup的一個對象。
  
  Soup類向我們展示出如何通過將所有構建器都設為private,從而防止直接創建一個類。請記住,假若不明確地至少創建一個構建器,就會自動創建默認構建器(沒有自變量)。若自己編寫默認構建器,它就不會自動創建。把它變成private后,就沒人能為那個類創建一個對象。但別人怎樣使用這個類呢?上面的例子為我們揭示出了兩個選擇。第一個選擇,我們可創建一個static方法,再通過它創建一個新的Soup,然后返回指向它的一個句柄。假如想在返回之前對Soup進行一些額外的操作,或者想了解預備創建多少個Soup對象(可能是為了限制它們的個數),這種方案無疑是非凡有用的。
  
  第二個選擇是采用“設計方案”(Design Pattern)技術,本書后面會對此進行具體介紹。通常方案叫作“獨子”,因為它僅答應創建一個對象。類Soup的對象被創建成Soup的一個static private成員,所以有一個而且只能有一個。除非通過public方法access(),否則根本無法訪問它。
  
  正如早先指出的那樣,假如不針對類的訪問設置一個訪問指示符,那么它會自動默認為“友好的”。這意味著那個類的對象可由包內的其他類創建,但不能由包外創建。請記住,對于相同目錄內的所有文件,假如沒有明確地進行package聲明,那么它們都默認為那個目錄的默認包的一部分。然而,假若那個類一個static成員的屬性是public,那么客戶程序員仍然能夠訪問那個static成員——即使它們不能創建屬于那個類的一個對象。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美午夜丰满在线18影院| 欧美最近摘花xxxx摘花| 8090理伦午夜在线电影| 亚洲aⅴ男人的天堂在线观看| 久热精品视频在线| 亚洲网址你懂得| 91网站在线看| 久久全球大尺度高清视频| 欧美日韩999| 久久精品欧美视频| 国产精品嫩草影院一区二区| 丝袜情趣国产精品| 久久精品99无色码中文字幕| 色樱桃影院亚洲精品影院| 国产精品麻豆va在线播放| 都市激情亚洲色图| 国产美女久久精品香蕉69| 精品成人久久av| 欧美日韩亚洲一区二| 中文字幕不卡在线视频极品| 日韩中文字幕在线精品| 日韩成人激情影院| 亚洲成色www8888| 亚洲欧美三级伦理| 亚洲国产精品资源| 欧洲精品在线视频| 国产日韩欧美在线视频观看| 久久成人亚洲精品| 亚洲小视频在线| 91久久综合亚洲鲁鲁五月天| 欧美日韩不卡合集视频| 亚洲人高潮女人毛茸茸| 欧美日韩成人在线视频| 精品亚洲aⅴ在线观看| 国产在线观看91精品一区| 亚洲欧洲在线视频| 欧美午夜久久久| 久久在线视频在线| 亚洲人成网站999久久久综合| 日韩有码视频在线| 欧美日韩国产黄| 亚州欧美日韩中文视频| 欧美综合激情网| 91精品在线国产| 中文亚洲视频在线| 欧美激情按摩在线| 亚洲一区二区三区xxx视频| 午夜精品99久久免费| 亚洲女人天堂视频| 成人黄在线观看| 久久久久久久久中文字幕| 久久夜色撩人精品| 亚洲深夜福利在线| 国产精品美女在线观看| 久久久久久久999精品视频| 亚洲成人av片在线观看| 91丨九色丨国产在线| 欧美成人国产va精品日本一级| 亚洲理论在线a中文字幕| 国产精品久久久久久久久粉嫩av| 亚洲欧美制服中文字幕| 亚洲成人av在线播放| 成人午夜高潮视频| 亚洲激情第一页| 日韩欧美国产网站| 欧美尺度大的性做爰视频| 亚洲va欧美va国产综合久久| 国产一区二区动漫| 国产一区二区动漫| 综合国产在线观看| 中文字幕视频一区二区在线有码| 国产精品亚洲第一区| 91日本在线观看| 亚洲精品视频免费在线观看| 国产日韩精品在线观看| 亚洲成avwww人| 国产精品久久9| 国产成人精品免高潮费视频| 成人在线视频网| 国产精品一区二区三区免费视频| 日韩精品中文字幕在线| 精品视频偷偷看在线观看| 色午夜这里只有精品| 国产精品在线看| 91精品国产综合久久久久久蜜臀| 国产成人拍精品视频午夜网站| 亚洲精品美女久久久| 欧美成人性色生活仑片| 日韩av在线免播放器| 国产精品久久综合av爱欲tv| 国产精品电影网| 国产精品吊钟奶在线| 亚洲性日韩精品一区二区| 亚洲精品国产综合区久久久久久久| 九九热精品视频国产| 青青久久av北条麻妃海外网| 国产精品成人aaaaa网站| 亚洲国产精品久久91精品| 精品国产区一区二区三区在线观看| 日韩一区二区福利| 欧美最猛黑人xxxx黑人猛叫黄| 成人黄色片网站| 高清欧美性猛交xxxx黑人猛交| 精品久久久在线观看| 日韩暖暖在线视频| 97精品一区二区视频在线观看| 日韩免费看的电影电视剧大全| 亚洲成人av片| 国产精品aaa| 日韩亚洲一区二区| 日韩精品在线免费观看视频| 2018日韩中文字幕| 国内精品视频在线| 欧美国产日韩视频| 久久91精品国产| 欧美在线精品免播放器视频| 亚洲欧洲黄色网| 精品国偷自产在线视频99| 欧美午夜激情小视频| 日韩精品中文字幕在线| 91香蕉亚洲精品| 国产精品日日做人人爱| 精品久久香蕉国产线看观看亚洲| 亚洲精品丝袜日韩| 91精品免费久久久久久久久| 日韩大陆毛片av| 欧美黑人国产人伦爽爽爽| 最新日韩中文字幕| 亚洲精品资源美女情侣酒店| 成人黄色免费看| 欧美怡春院一区二区三区| 日韩av成人在线| 欧美性xxxx在线播放| 福利一区视频在线观看| 精品久久久久久亚洲精品| 欧美激情va永久在线播放| 亚洲美女在线视频| 懂色av一区二区三区| 久久久久日韩精品久久久男男| 欧美日韩在线视频观看| 亚洲久久久久久久久久| 91综合免费在线| 亚洲欧美日韩精品久久亚洲区| 成人伊人精品色xxxx视频| 国产精品嫩草影院一区二区| 精品亚洲一区二区三区在线观看| 国产精品青草久久久久福利99| 国产成人久久久精品一区| 亚洲欧美视频在线| 欧美国产亚洲视频| 国产亚洲精品久久久优势| 日韩av毛片网| 亚洲视频在线观看免费| 在线观看视频99| 欧美黄色成人网| 欧美一区在线直播| 国产精品福利无圣光在线一区| 国产精品久久久久久久久久东京| 成人黄在线观看| 国产成人精品av在线| 国内免费久久久久久久久久久| 国内精品国产三级国产在线专| 日韩欧美国产免费播放| 欧美日本在线视频中文字字幕|