俗話說沒有規矩就沒有方圓,java作為一門嚴謹的面向對象的高級編程語言,自然對權限整個重要的問題有嚴格的控制。
Java中,可以通過一些Java關鍵字,來設置訪問控制權限;
主要有 private(私有), package(包訪問權限),protected(子類訪問權限),public(公共訪問權限)
在java里,這些語句都可以修飾類中的成員變量和方法,但是只有public和友好型可以修飾類。舉個例子:
接下來就詳細解釋一下這幾種權限的差別(博客最后有表格)按權限由低到高:(高權限有低權限所有特性)
Private:
類中的所有private方法和private成員變量只能在類中訪問而不能在其他類中訪問。
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package Main; public class Private { private int a; private int b; Protected (){ this .a= 1 ; this .b= 2 ; //a和b只能在Private類中調用 } private void set(){ System.out.println( "" +a+ "" +b+ "\n" ); } void Print(){ this .set(); //只能在這里用; } } |
友好型和protected:
如果在另一個類中聲明其他的一個類,如果這兩個在一個包中那么另一個類能訪問這個其他類的友好型變量不同包不能訪問:
如果在另一個B類中聲明其他的一個類A,如果這兩個在一個包中那么另一個類B也能能訪問這個其他類A的protected變量(或方法),如果不在一個包,那么如果類A有一個父類C如果,如果父類C中有一個protected變量(或方法),只要B,C在一個包中,B就能使用A中從父類繼承的protected方法。如果A是B的子類,如果AB不在一個包中,那么A可以使用B中protected方法。
例如:
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
45
46
47
48
49
50
51
|
package Main; import Protected.*; public class Main { public static void main(String args[]){ Protected jkl= new Protected(); jkl.Print(); //調用jkl父類的protect方法 Frindly prot = new Frindly(); System.out.println(prot.a); //在Main類中調用友好型的變量 prot.set(); //在Main類中調用友好型的方法 } } package Main; public class Frindly { int a,b,c,d; Frindly(){ a=b=c=d= 1 ; } void set (){ System.out.print( "" +a+ " " +b+ "\n" ); } } package Main; public class Protectedfather{ protected int a; private int b; protected Protectedfather (){ this .a= 1 ; this .b= 2 ; //a和b只能在Protected中調用 } private void set(){ System.out.println( "" +a+ "" +b+ "\n" ); } protected void Print(){ this .set(); //只能在這里用; } } package Protected; import Main.*; public class Protected extends Protectedfather{ public Protected(){ super (); //在另一個包中調用里父類中的protect構造方法 super .a= 12 ; //調用父類的protect變量 } } |
Public:
如果類中的方法或者變量是public,那么就可以在別的類中調用,沒有限制(用在夸包)。A帶掉用別的包中的B類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package Main; import Public.*; public class Main { public static void main(String args[]){ int a; Public p= new Public(); //調用public類中的public方法 a=p.a; //調用Public類中的public變量 p.set(); } } package Public; public class Public { public int a= 12 ; public void set (){ System.out.println( "OK\n" ); } } |
總結表格::
|
同包 |
不同包 |
|||
|
子類 |
非子類 |
子類 |
非子類 |
|
Private |
是 |
否 |
否 |
否 |
否 |
友好型 |
是 |
是 |
是 |
否 |
否 |
Protected |
是 |
是 |
是 |
是 |
否 |
Public |
是 |
是 |
是 |
是 |
是 |
總結
以上就是本文關于淺談java面向對象中四種權限的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
原文鏈接:http://blog.csdn.net/a1237871112/article/details/50926975