首先按照權(quán)限從上到下的順序排序
public 任何地方都可以訪問(wèn),對(duì)訪問(wèn)無(wú)限制
protected 同一個(gè)包內(nèi)或者不同包內(nèi)的子類可以訪問(wèn)
default(默認(rèn)省略) 同一個(gè)包內(nèi)可以訪問(wèn)
private 同一個(gè)類可以訪問(wèn)
表格如下:
限定符 | 類內(nèi)部 | 本包 | 子類 | 外部包 |
---|---|---|---|---|
public | 是 | 是 | 是 | 是 |
protected | 是 | 是 | 是 | 否 |
default | 是 | 是 | 否 | 否 |
private | 是 | 否 | 否 | 否 |
代碼如下:
/**
* @author wzq
* @date 2018/12/27 上午11:43
* @desc 最基本的一個(gè)類(被調(diào)用屬性的一個(gè)類,分別定義了四個(gè)不同權(quán)限的屬性)
*/
public class Packet1Example {
public int mPublic;
protected int mProtected;
int mDefault;
private int mPrivate;
}
/**
* @author wzq
* @date 2018/12/27 上午11:47
* @desc 一個(gè)相同包內(nèi)的類, 嘗試去獲取Example類里面的屬性
*/
public class Packet1Test {
private Packet1Test() {
Packet1Example packet1Example = new Packet1Example();
int a = packet1Example.mPublic;
int b = packet1Example.mProtected;
int c = packet1Example.mDefault;
}
}
/**
* @author wzq
* @date 2018/12/27 上午11:49
* @desc 一個(gè)相同包內(nèi)的類, 嘗試去獲取Example類里面的屬性
*/
public class Packet2Test {
private Packet2Test() {
Packet1Example packet1Example = new Packet1Example();
int a = packet1Example.mPublic;
}
}
/**
* @author wzq
* @date 2018/12/27 上午11:51
* @desc 一個(gè)不同包的繼承自Example的子類,嘗試去獲取Example的屬性
*/
public class Packet2SonTest extends Packet1Example {
private Packet2SonTest() {
int a = mPublic;
int b = mProtected;
}
}