紅知博客

          知其然,亦知其所以然
          posts - 32, comments - 35, trackbacks - 0, articles - 0

          導航

          <2007年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          新聞分類

          博客 鏈接

          搜索

          •  

          積分與排名

          • 積分 - 95530
          • 排名 - 609

          最新評論

          閱讀排行榜

          評論排行榜

          java訪問權限修飾符public  protected  friendly private用法總結 

               首先聲明:java中,friendly這個修飾符并沒有顯式的聲明,在成員變量和方法前什么修飾符也不用,默認的就是friendly。
              為了條理清晰,分三種不同情況來總結。


             一 訪問權限修飾符修飾成員變量和方法
             public:表明該成員變量和方法是共有的,能在任何情況下被訪問。
            
             protected:必須在同一包中才能被訪問。(說的比較簡單,看個例子就明白了)   
                 eg:class A
                    {
                      protected int weight ;
                      protected int f( int a,int b   )  
                      {
                        // 方法體
                      }
                     }     
                 假設B與A在同一個包中,則
                     class B
                    {
                      void g()
                      {
                        A a=new A();
                        A.weight=100;//合法
                        A.f(3,4);    //合法
                       }
                     }
             特別說明:什么是在同一個包中?
             答:用package打包在一起的class ,叫在同一個包中。(不明白,舉個例子)
                 eg:在JDK的src\java\io中,你會看到許多java類,第一句源代碼都是package java.io;
                 沒有使用package打包的,在同一目錄下的類也會被視做同一個包。
            
             friendly:在這種情況下中,同protected。區別在第二和第三種情況中。
                 eg: class A
                    {
                      int weight ;
                      int f( int a,int b   )  
                      {
                        // 方法體
                      }
                     }     
                 假設B與A在同一個包中,則
                     class B
                    {
                      void g()
                      {
                        A a=new A();
                        A.weight=100;//合法
                        A.f(3,4);    //合法
                       }
                     }
              private: 只能在本類中訪問。
                       eg:    class   Test
                              { 
                                 private int money;
                                 Test()
                                 {
                                    money=2000;
                                 }
                                 private int getMoney()
                                 {
                                   return money;
                                  }
                               public  static  void main(String args[])
                               {
                                   Test te=new  Test();
                                   te.money=3000;             //合法
                                   int m=te.getMoney();       //合法
                                   System.out.println("money="+m);
                                }
                               }
                            
             PS: 實際上,把重要的數據修飾為private,然后寫一個public的函數訪問它,正好體現了OOP的封裝特性,是OOP安全性的體現。
             

          二  訪問權限修飾符修飾類
             1,不能用protected和private修飾類。
             2,用friendly修飾的類叫友好類,在另外一個類中使用友好類創建對象時,要保證它們在同一包中。
            

          三   訪問權限修飾符與繼承
             這里的訪問修飾符指的是修飾成員變量和方法??梢苑譃閮煞N情況:
             1,子類與父類在同一包中
              此時只有聲明為private的變量與方法不能被繼承(訪問)。
             eg:
               class Father
               {
                 private int money ;
                 int weight=100;
                
                }
               class Son extends Father
               {
                 viod f()
                 {
                   money=10000;//   非法
                   weight=100; //   合法
                  }
                }
              2,子類與父類不在同一包中
              此時private與friendly均不能被繼承(訪問), protected與public可以。
               eg:
                 Father.java

                package com.aaa
                public class Father
               {
                 int height ;
                 protected  int money=120;
                 public int weight;
                 protected int getMoney()
                 {
                   return money;
                 }
                 void setMoney(int newMoney)
                 {
                   money=newMoney;
                 }
                }
              
                Son.java
                package com.bbb
                import com.aaa.Father;
                public class Son extends Father
                {
                   void f()
                   {
                     money=10000;//合法
                     //height=170;//非法,height為friendly修飾的變量
                     System.out.println(money);//輸出結果是10000
                     //setMoney(300);          //非法
                     int number=getMoney();    //合法
                     System.out.println(number);//輸出結果是10000
                    }
                     public  static  void main(String args[])
                    {
                      Son sss=new Son();
                      sss.f();
                     }
                 }
            所以,訪問權限修飾符權限從高到低排列是public  ,protected  ,friendly, private。

          我要啦免费统计
          主站蜘蛛池模板: 德庆县| 大余县| 通河县| 星子县| 保康县| 长垣县| 精河县| 勐海县| 平陆县| 平阴县| 庆城县| 嘉兴市| 雅江县| 喀喇| 都安| 呼伦贝尔市| 昌宁县| 彭阳县| 葵青区| 邻水| 峨眉山市| 三原县| 祁东县| 阜宁县| 开鲁县| 张北县| 墨竹工卡县| 肥乡县| 赞皇县| 红河县| 讷河市| 临沧市| 安庆市| 四川省| 多伦县| 聊城市| 百色市| 洛川县| 大安市| 华安县| 黄冈市|