<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      Java編程思想讀書筆記(5章)

      [摘要]第5章 隱藏實現細節   一.Java訪問權限飾詞(access specifiers)    Java有public、protect、friendly、private四種訪問權限,并且這四訪問權限的訪問范圍越來越小。    1. friendly    1) 果一個class內的數據成員或方法沒...
      第5章 隱藏實現細節

        一.Java訪問權限飾詞(access specifiers)

         Java有public、protect、friendly、private四種訪問權限,并且這四訪問權限的訪問范圍越來越小。

         1. friendly

         1) 果一個class內的數據成員或方法沒有任何權限飾詞,那么它的缺省訪問權限就是friendly。同一個package內的其它所有classes都可以訪問friendly成員,但對package以外的classes則形同private。

         2)對于同一個文件夾下的、沒有用package的classes,Java會自動將這些classes初見為隸屬于該目錄的default package,可以相互調用class中的friendly成員。如以下兩個class分別在同一個文件夾的兩個文件中,雖然沒有引入package,但隸屬于相同的default package。

         class Sundae{
         //以下兩個方法缺省為friendly
         Sundae(){}
         Void f() {System.out.println(“Sundae.f()”);
         }
         public class IceCream{
         public static void main(String[] args){
         Sundae x = new Sundae();
         x.f();
         }
         }
         2. public:可以被任何class調用

         3. private:private成員只能在成員所屬的class內被調用,如:

         class Sundae{
         private Sundae(){}//只能在Sundae class中被調用
         Sundae(int i) {}
         static Sundae makASundae() {
         return new Sundae();
         }
         }
         public class IceCream{
         public static void main(String[] args){
         // Sundae class中構造函數Sundae()是private,
         // 所以不能用它進行初始化
         //Sundae x = new Sundae();
         Sundae y = new Sundae(1);//Sundae(int)是friendly,可以在此調用
         Sundae z = Sundae.makASundae();
         }
         }
         4. protected:具有friendly訪問權限的同時,又能被subclass(當然包括子孫類,即子類的子類)所訪問。即,既能被同一package中的classes訪問,又能被protected成員所在class的subclass訪問。

         二.Class的訪問權限

         1.Class同樣具有public、protect、friendly、private四種訪問訪問權限:

         1)public:在任何地方都可被使用

         2)protect、private:除了它自己,沒有任何class可以使用,所以class不能是

         protected或private(inner class除外)

         3) friendly:同一個package中的classes能用

         2. 如何調用構造函數被聲明為private的class

         1) 用static函數

         2) 用Singteton模式

         class Soup{
         private Soup(){}
         //(1)靜態函數方法
         public static Soup makeSout(){
         return new Soup();
         }
         //(2)The "Singleton" pattern:

         private static Soup ps1 = new Soup();
         public static Soup access(){
         return ps1;
         }
         public void f(String msg){
         System.out.println("f(" + msg + ")");
         }
         }
         public class Lunch{
         public static void main(String[] args){
         //Soup priv1 = new Soup();編譯錯誤
         Soup priv2 = Soup.makeSout();
         Soup priv3 = Soup.access();
         priv2.f("priv2");
         priv3.f("priv3");
         }




      日韩精品一区二区三区高清