一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 舉例詳解Java中的訪問權限修飾符

舉例詳解Java中的訪問權限修飾符

2020-01-03 14:49damotiansheng JAVA教程

這篇文章主要介紹了舉例詳解Java中的訪問權限修飾符,是Java入門學習中的基礎知識,需要的朋友可以參考下

訪問權限符:
(1)public:
對于成員來說:任何其他類都可以訪問它們,不管在同一個包中還是在另外的包中。
對于類來說:    也是一樣。
(2)friendly:
對于成員老說:如果一個類的成員沒有任何權限修飾,那么它門就是缺省包訪問權限,用friendly來表示,注

意friendly不是Java中的關鍵字,這里是個人喜歡的方式用它表示而已。同一個包內其它類可以訪問,但包外

就不可以。對于同一個文件夾下的、沒有用package的classes,Java會自動將這些classes初見為隸屬于該目錄

的default package,可以相互調用class中的friendly成員。如以下兩個class分別在同一個文件夾的兩個文件

中,雖然沒有引入package,但隸屬于相同的default package。

?
1
2
3
4
5
6
7
8
9
10
11
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();
}
}

對于類來說:同一個包中的類可以用。總之,類只可以聲明為public或者friendly。
(3)private:
對于對于成員來說:只能在該成員隸屬于的類中訪問。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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();
   }
   }

對于類來說:類不可以聲明為private。

(4)protected:
對于對于成員來說:相同包中的類可以訪問(包訪問權限);基類通過protected把基類中的成員的訪問權限賦予派生類不是所有類(派生類訪問權限)。

(5)default(默認權限)
  類,數據成員,構造方法,方法成員,都能夠使用默認權限,即不寫任何關鍵字。默認權限即同包權限,同包權限的元素只能在定義它們的類中,以及同包的類中被調用。

例子:package c05.local;

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import pack1.Cookie;
//注意:在這里ChocolateChip繼承了類Cookie,按道理bite()方法也在
//ChocolateChip中,可以用x.bite直接調用,但是不可以的,因為類ChocolateChip
//和Cookie類不在一個包中,各自具有包訪問權限,為了能夠使用x.bite()必須要把
//Cookie方法的訪問權限換成public或者protected,但是一旦換成public所有的人就
//可以訪問了,這樣達不到隱私的要求,所以設置成protected最好,既可以順利訪問,也可以
//避免外面的類調用,保護好隱私的作用
public class ChocolateChip extends Cookie {
 
  public ChocolateChip() {
   System.out.println("ChocolateChip constructor");
  }
  public static void main(String[] args) {
   ChocolateChip x = new ChocolateChip();
   x.bite(); // Can't access bite
  
  }
} ///:~
?
1
2
3
4
5
6
7
8
9
10
11
package pack1;
 
public class Cookie {
public Cookie()
{
System.out.println("Cookie constructor");
}
 
protected void bite(){System.out.println("bite");}
 
}

對于類來說:類不可以聲明為protected

 

對于類的權限修飾,下面有更好的解釋:

Class類的訪問權限:
public:可以供所有的類訪問。
默認:默認可以稱為friendly但是,java語言中是沒有friendly這個修飾符的,這樣稱呼應該是來源于c++。默認的訪問權限是包級訪問權限。
         即如果寫了一個類沒有寫訪問權限修飾符,那么就是默認的訪問權限,同一個包下的類都可以訪問到,即使可以實例化該類
         (當然如果這個類不具有實例化的能力除外,比如該類沒有提供public的構造函數)。

說明:
       1、每個編譯單元(類文件)都僅能有一個public class
       2、public class的名稱(包含大小寫)必須和其類文件同名。
       3、一個類文件(*.java)中可以不存在public class。
        這種形式的存在的場景:如果我們在某個包內撰寫一個class,僅僅是為了配合同包內的其他類工作,而且
       我們不想再為了撰寫說明文檔給客戶(不一定是現實意義的客戶,可能是調用這個類的類)看而傷腦筋,而且有可能過一段時間之后
       有可能會徹底改變原有的做法,并完全舍棄舊版本,以全新的版本代替。
       4、class不可以是private和protected。
       5、如果不希望那個任何產生某個class的對象,可以將該類得所有構造函數設置成private。但是即使這樣也可以生成該類的對象,就是class的static的成員(屬性和方法)可以辦到。

綜合示例:
First.java:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package Number;
import Test.*;
 
public class Frist extends Test
{
protected String s1 = "你好";
public static void main( String[] args)
{
String s2 = "java";
//System.out.println(s1);
System.out.println(s2);
 
Frist t = new Frist();
System.out.println(t.s);
t.show();
return;
}
 
}
 
Test.java:
package Test;
 
 
public class Test 
{
protected String s = "hello test"; //可以被同包中的類訪問以及子類訪問,該子類可以是與包Test不同
public void show()
{
Test1 t1 = new Test1();
return;
}
 
 
}
 
class Test1
{
Test1()
{
Test t = new Test();
System.out.println(t.s);
}
}

輸出: 

?
1
2
3
java
hello test
hello test

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美区一区 | 日韩欧美国产一区二区三区 | 粗又长好猛好爽视频 | 99av导航 | 91久久99热青草国产 | 免费人成在线观看69式小视频 | 动漫美丽妇人1~2在线看 | 亚洲一区二区日韩欧美gif | 国产欧美视频一区二区三区 | 国产精品视频播放 | 成人免费视屏 | 日本不卡视频免费 | 四虎永久在线精品国产馆v视影院 | 精品无人乱码一区二区三区 | 久久永久视频 | 亚洲欧洲日产国码无码av | 激情影院免费 | 5g影院天天5g天天爽大陆 | 国产欧美日韩不卡 | 性插图动态图无遮挡 | 国产91精选学生在线观看 | 999久久免费高清热精品 | 国产欧美日韩精品高清二区综合区 | tk白丝丨vk| 四虎2020紧急免费入口 | 色男人的天堂久久综合 | 亚洲高清中文字幕一区二区三区 | 亚洲国产精品综合久久一线 | 精品一区二区三区中文 | 91外围| 国产高清视频在线 | 香蕉久久一区二区三区 | 四虎一影院区永久精品 | 男人肌肌捅女人肌肌 | 91亚洲精品丁香在线观看 | 亚洲 小说 欧美 激情 另类 | 亚洲狠狠网站色噜噜 | 亚洲精品国产精品国自产观看 | 成人免费体验区福利云点播 | 性关系视频网站 | 91热这里只有精品 |