記得在一次面試的筆試題中,有的面試官會(huì)要求寫(xiě)出具體的像pullic這些訪問(wèn)限定符的作用域。其實(shí),平常我都沒(méi)去系統(tǒng)的考慮這些訪問(wèn)限定符的作用域,特別是包內(nèi)包外的情況,OK,筆試不行了。
這是java基本的知識(shí),也是公司看重的,那沒(méi)辦法啦,我的腦袋記不住東西,那我只能把這些東西寫(xiě)下來(lái)方便自己溫故知新,不廢話了,貼代碼了。
代碼如下:
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
package com.jaovo; /** *_1_ 成員變量訪問(wèn)權(quán)限的求證 * public private protected default(默認(rèn)的權(quán)限) *自己包自己類(lèi) 可訪問(wèn) 可訪問(wèn) 可訪問(wèn) 可訪問(wèn) *自己包別的類(lèi) 可訪問(wèn) 不可訪問(wèn) 可訪問(wèn) 可訪問(wèn) *別的包別的類(lèi) 可訪問(wèn) 不可訪問(wèn) 不可訪問(wèn) 不可訪問(wèn) *自己包別的類(lèi)有繼承關(guān)系 可訪問(wèn) 不可訪問(wèn) 可訪問(wèn) 可訪問(wèn) *別的包別的類(lèi)有繼承關(guān)系 可訪問(wèn) 不可訪問(wèn) 可訪問(wèn) 不可訪問(wèn) *--------------------------------------------------------------------------- *_2_ 成員方法訪問(wèn)權(quán)限的求證 * public private protected default(默認(rèn)的權(quán)限) *自己包自己類(lèi) 可訪問(wèn) 可訪問(wèn) 可訪問(wèn) 可訪問(wèn) *自己包別的類(lèi) 可訪問(wèn) 不可訪問(wèn) 可訪問(wèn) 可訪問(wèn) *別的包別的類(lèi) 可訪問(wèn) 不可訪問(wèn) 不可訪問(wèn) 不可訪問(wèn) *自己包別的類(lèi)有繼承關(guān)系 可訪問(wèn) 不可訪問(wèn) 可訪問(wèn) 可訪問(wèn) *別的包別的類(lèi)有繼承關(guān)系 可訪問(wèn) 不可訪問(wèn) 可訪問(wèn) 不可訪問(wèn) */ import cn.jaovo.D; import cn.jaovo.E; //public class Chengyuan{ //public class Chengyuan extends C{ //public class Chengyuan extends D{ public class Chengyuan extends E{ public static void main(String[] args){ // 一 成員變量的權(quán)限訪問(wèn) /*1 B b = new B();//自己包別的類(lèi) System.out.println( b.i1 ); System.out.println( b.i2 ); System.out.println( b.i3 );//i3可以在B中訪問(wèn)private System.out.println( b.i4 ); */ /*2 Chengyuan ch = new Chengyuan();//自己包自己類(lèi) System.out.println( ch.i1 ); System.out.println( ch.i2 ); System.out.println( ch.i3 ); System.out.println( ch.i4 ); */ /*3 D d = new D();//別的包別的類(lèi) System.out.println( d.i1 ); System.out.println( d.i2 );//i2 在D中不是公共的;無(wú)法從外部程序包中對(duì)其進(jìn)行訪問(wèn) System.out.println( d.i3 );//i3可以在D中訪問(wèn)private System.out.println( d.i4 );//i4可以在D中訪問(wèn)protected */ /*4 Chengyuan ch = new Chengyuan();//自己包別的類(lèi)有繼承關(guān)系Chengyuan extends C System.out.println( ch.i1 ); System.out.println( ch.i2 ); System.out.println( ch.i3 );//i3可以在B中訪問(wèn) System.out.println( ch.i4 ); */ /*5 Chengyuan ch = new Chengyuan();//別的包別的類(lèi)有繼承關(guān)系Chengyuan extends D System.out.println( ch.i1 ); System.out.println( ch.i2 );//i2在D中不是公共的;無(wú)法從外部程序包中對(duì)其進(jìn)行訪問(wèn) System.out.println( ch.i3 );//i3可以在D中訪問(wèn)private System.out.println( ch.i4 ); */ //====================================================== //二 成員方法的訪問(wèn)權(quán)限 /*1 Chengyuan ch = new Chengyuan();//自己包自己類(lèi) System.out.println( ch.m1() ); System.out.println( ch.m2() ); System.out.println( ch.m3() ); System.out.println( ch.m4() ); */ /*2 B b = new B();//自己包別的類(lèi) System.out.println( b.m1() ); System.out.println( b.m2() ); System.out.println( b.m3() );//m3()可以在B中訪問(wèn)private System.out.println( b.m4() ); */ /*3 E e = new E();//別的包 別的類(lèi) System.out.println( e.m1() ); System.out.println( e.m2() );//m2在E中不是公共的;無(wú)法從外部程序包中對(duì)其進(jìn)行訪問(wèn) System.out.println( e.m3() );//m3可以在E中訪問(wèn)private System.out.println( e.m4() ); //m4()可以在E中訪問(wèn)protected */ /*4 C c = new C();//自己包別的類(lèi)有繼承關(guān)系Chengyuan extends C System.out.println( c.m1() ); System.out.println( c.m2() ); System.out.println( c.m3() );//m3()可以在C中訪問(wèn) System.out.println( c.m4() ); */ //5 Chengyuan ch = new Chengyuan(); System.out.println( ch.m1() ); System.out.println( ch.m2() ); //找不到符號(hào) System.out.println( ch.m3() ); //找不到符號(hào) System.out.println( ch.m4() ); } } class B{ //1 成員變量 public int i1 = 100 ; int i2 = 200 ; private int i3 = 300 ; protected int i4 = 400 ; //2 成員方法 public int m1(){ return 1 ;} int m2(){ return 1 ;} private int m3(){ return 1 ;} protected int m4(){ return 1 ;} } class C{ //1 成員變量 public int i1 = 100 ; int i2 = 200 ; private int i3 = 300 ; protected int i4 = 400 ; //2 成員方法 public int m1(){ return 1 ;} int m2(){ return 1 ;} private int m3(){ return 1 ;} protected int m4(){ return 1 ;} } //======================================================== //D.class文件和E.class文件在cn包內(nèi),為了方便把他們放到這里 package cn.jaovo; public class D{ //1 成員變量 public int i1 = 100 ; int i2 = 200 ; private int i3 = 300 ; protected int i4 = 400 ; //2 成員方法 public int m1(){ return 1 ;} int m2(){ return 1 ;} private int m3(){ return 1 ;} protected int m4(){ return 1 ;} } //------- package cn.jaovo; public class E{ //1 成員變量 public int i1 = 100 ; int i2 = 200 ; private int i3 = 300 ; protected int i4 = 400 ; //2 成員方法 public int m1(){ return 1 ;} int m2(){ return 1 ;} private int m3(){ return 1 ;} protected int m4(){ return 1 ;} } |
以上代碼是Java中成員方法與成員變量訪問(wèn)權(quán)限詳解,希望大家喜歡。