W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
我們可以控制類(lèi)成員變量和方法的訪問(wèn)級(jí)別通過(guò)訪問(wèn)說(shuō)明符。
Java的訪問(wèn)說(shuō)明符是public,private,protected和默認(rèn)訪問(wèn)級(jí)別。
受保護(hù)的功能比默認(rèn)功能更容易訪問(wèn)。
要了解公共和私人訪問(wèn)的影響,請(qǐng)考慮以下程序:
class Test { int a; // default access public int b; // public access private int c; // private access // methods to access c void setc(int i) { c = i; } int getc() { return c; } } public class Main { public static void main(String args[]) { Test ob = new Test(); ob.a = 1; ob.b = 2; // This is not OK and will cause an error // ob.c = 100; // Error! // You must access c through its methods ob.setc(100); // OK System.out.println("a, b, and c: " + ob.a + " " + ob.b + " " + ob.getc()); } }
輸出:
子類(lèi)不能訪問(wèn)超類(lèi)的私有成員。例如,考慮下面的簡(jiǎn)單類(lèi)層次結(jié)構(gòu)。如果嘗試編譯以下程序,您將收到錯(cuò)誤消息。
class A { private int j; // private to A } class B extends A { int total; void sum() { total = j; // ERROR, j is not accessible here } }
輸出:
下表顯示了Java的訪問(wèn)矩陣。是意味著無(wú)障礙,沒(méi)有意義無(wú)法訪問(wèn)。
位置 | 私人的 | 無(wú)修飾符 | 保護(hù) | 公開(kāi) |
---|---|---|---|---|
相同類(lèi) | Yes | Yes | Yes | Yes |
相同的包子類(lèi) | No | Yes | Yes | Yes |
相同的包非子類(lèi) | No | Yes | Yes | Yes |
不同的包子類(lèi) | No | No | Yes | Yes |
不同的包非子類(lèi) | No | No | No | Yes |
并非所有修改器都可以應(yīng)用于所有功能。頂級(jí)類(lèi)可能不受保護(hù)。方法可能不是短暫的。靜態(tài)可以將其應(yīng)用于自由浮動(dòng)代碼塊。
下表顯示了功能和修改器的所有可能組合。yes表示我們可以使用該修飾符來(lái)控制對(duì)應(yīng)實(shí)體的訪問(wèn)。
修飾符 | 類(lèi) | 變量 | 方法 | 構(gòu)造函數(shù) | 代碼塊 |
---|---|---|---|---|---|
public | yes | yes | yes | yes | no |
protected | no | yes | yes | yes | no |
empty accessor | yes | yes | yes | yes | yes |
private | no | yes | yes | yes | no |
final | yes | yes | yes | no | no |
abstract | yes | no | yes | no | no |
static | no | yes | yes | no | yes |
native | no | no | yes | no | no |
transient | no | yes | no | no | no |
volatile | no | yes | no | no | no |
synchronized | no | no | yes | no | yes |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: