熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

public:接口訪問

2013-11-23 19:30:30  來源: Java核心技術 

  使用public關鍵字時它意味著緊隨在public後面的成員聲明適用於所有人特別是適用於使用庫的客戶程序員假定我們定義了一個名為dessert的包其中包含下述單元(若執行該程序時遇到困難請參考第小節賦值
  
  //: Cookiejava
  // Creates a library
  package cdessert;
  
  public class Cookie {
   public Cookie() {
    Systemoutprintln(Cookie constructor);
   }
   void foo() { Systemoutprintln(foo); }
  } ///:~
  
  請記住Cookiejava必須駐留在名為dessert的一個子目錄內而這個子目錄又必須位於由CLASSPATH指定的C目錄下面(C代表本書的第章)不要錯誤地以為Java無論如何都會將當前目錄作為搜索的起點看待如果不將一個作為CLASSPATH的一部分使用Java就不會考慮當前目錄
  
  現在假若創建使用了Cookie的一個程序如下所示
  
  //: Dinnerjava
  // Uses the library
  import cdessert*;
  
  public class Dinner {
   public Dinner() {
    Systemoutprintln(Dinner constructor);
   }
   public static void main(String[] args) {
    Cookie x = new Cookie();
    //! xfoo(); // Cant access
   }
  } ///:~
  
  就可以創建一個Cookie對象因為它的構建器是public的而且類也是public的(公共類的概念稍後還會進行更詳細的講述)然而foo()成員不可在Dinnerjava內訪問因為foo()只有在dessert包內才是友好
  
   默認包
  
  大家可能會驚訝地發現下面這些代碼得以順利編譯——盡管它看起來似乎已違背了規則
  
  //: Cakejava
  // Accesses a class in a separate
  // compilation unit
  
  class Cake {
   public static void main(String[] args) {
    Pie x = new Pie();
    xf();
   }
  } ///:~
  
  在位於相同目錄的第二個文件裡
  
  //: Piejava
  // The other class
  
  class Pie {
   void f() { Systemoutprintln(Pief()); }
  } ///:~
  
  最初可能會把它們看作完全不相干的文件然而Cake能創建一個Pie對象並能調用它的f()方法!通常的想法會認為Pie和f()是友好的所以不適用於Cake它們確實是友好的——這部分結論非常正確但它們之所以仍能在Cakejava中使用是由於它們位於相同的目錄中而且沒有明確的包名Java把象這樣的文件看作那個目錄默認包的一部分所以它們對於目錄內的其他文件來說是友好
From:http://tw.wingwit.com/Article/program/Java/hx/201311/27000.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.