包和存取權限(二),存取權限
1.Java當中的訪e:問許可權
1.public:公用許可權
public String name;
既可以修飾類又可以修飾成員變數和成員函數;
如果一個類的許可權聲明為public,那麼類名必須與.java檔案名稱必須相同
如果一個類的許可權不是public,就無法從外部類中進行訪問在
在一個包的外部來調用對象的某一個成員變數或成員函數那麼要求這個成員變數或成員函數必須是public許可權
總結:沒有任何限制,同一個包當中,或者不同包當中的類都可以自由訪問
2.private:私人許可權
private String name;
private可以修飾變數和函數,一旦變數和函數修飾為private表示只能在當前的類中使用,而在類的外部中不可以使用(不管包相同不相同)
3.default:包層級存取權限
String name;(不寫入權限修飾符就是default許可權)
可以修飾類、成員變數和成員函數
在同一個包當中,可以自由訪問
4.protected:受保護許可權
2.軟體包的匯入
import org.marsdroid.Person;
比較懶的辦法:import org.marsdroid.*;(代表匯入org.marsdroid包下的全部檔案)
沒有public修飾的java類,其存取權限是包級存取權限還是同一檔案下的存取權限
1、public:public表明該資料成員、成員函數是對所有使用者開放的,所有使用者都可以直接進行調用
2、private:private表示私人,私人的意思就是除了class自己之外,任何人都不可以直接使用,私人財產神聖不可侵犯嘛,即便是子女,朋友,都不可以使用。
3、protected:protected對於子女、朋友來說,就是public的,可以自由使用,沒有任何限制,而對於其他的外部class,protected就變成private。
範圍 當前類 同一package 子孫類 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
java中包到底是什?包存取權限又是什,有C++基礎
是否是說 first.java中有A B C 三個類,second.java中有D E F 三個類,那麼first和second是兩個不同的包?不是,這是java檔案的組織方式,因為java強制要求一個public類必須在一個同名的檔案中,但是多個包存取權限的類是可以在同一個檔案夾中的
First.java
class A{void print(){System.out.println("A");}}class B{public void print(){System.out.println("B");}}class C{public void print(){System.out.println("C");}}Second.java
class E{public void print(){System.out.println("E");}}class D{public void print(){System.out.println("D");}}class F{public void print(){System.out.println("F");}}A B C D E F都是在同一個包中,而不是ABC在firstFirst包中,而DEF在Second包中
改寫Second.java
package package2;class E{public void print(){System.out.println("E");}}class D{public void print(){System.out.println("D");}}class F{public void print(){System.out.println("F");}}你現在first.java中是無法訪問EDF類的,這才是包的概念,另一個包中的(First.java中的ABC是在預設包中也是另外一個包)是無法訪問EDF類的,因為他們是包存取權限,類只有兩種許可權,包存取權限和public許可權
包訪問是說我可以在first.java中訪問second的某些方法或產生D E F對象嗎?
是說如果first.java和second.java是在同一個包中,那麼是可以的,但是如果不在同一個包中,並且那些類或方法是包存取權限,那是沒有辦法訪問的
在添加一個類Third.java
package package2.third;class Third{public void print(){System.out.println("E");}}class D{public void print(){System.out.println("D");}}class F{public void print(){System.out.println("F");}}
這些類都是包存取權限,那麼E.java中的類可以訪問嗎?不可以,包沒有嵌套的概念,即使Third.java是在E.java的的子包中即E.java在package2中,而Third.java在package2.third
java中類的存取權限(不是內部類,內部類必須另加討論)只有public和包存取權限,要麼......餘下全文>>