java中public和缺省這兩個訪問權(quán)限的根本區(qū)別?
為了區(qū)分開public和缺省的區(qū)別,我們要引進包(package)的概念。包就像咱們磁盤上的目錄一樣,馬克-to-win。package a;就是定義說當(dāng)前的目錄為a。底下編的任何的類,都會出現(xiàn)在當(dāng)前的這個目錄a里。import b;就是導(dǎo)入b目錄當(dāng)中的類資源,因為我們在運行當(dāng)前目錄當(dāng)中的類時,需要b目錄當(dāng)中的類資源。導(dǎo)入之后,b目錄當(dāng)中的類隨便用。
馬克- to-win:馬克 java社區(qū):防盜版實名手機尾號: 73203。
eclipse當(dāng)中如何添加包?在new class時,其中有個項, 在其中寫上你的包名就可以了。注意再做底下的實驗時,要分別new兩個類,這樣系統(tǒng)會產(chǎn)生兩個文件。
package p1;
public class P1Test3 {//前面必須得加個public,否則從別的包里沒法訪問到這個類
int a; // default access
public int b; // public access
private int c; // private access
//前面必須得加個public,否則從別的包里沒法用這個方法,馬克-to-win
public void setc(int i) { // set c's value
c = i;
}
public int getc() { // get c's value
return c;
}
}
package p2;
import p1.P1Test3;
public class Test {
public static void main(String args[]) {
P1Test3 ob = new P1Test3();
// ob.a = 10;//這樣寫錯誤,這里的a必須在P1Test3類中換成public權(quán)限才可以工作, 因為是在不同的包里
ob.b = 20;
// ob.c = 100; // 錯誤Error!, c是私有的
ob.setc(100); // OK
System.out.println("b,and c: " + " " + ob.b + " " + ob.getc());
}
}
輸出結(jié)果:
b,and c: 20 100
assignment: a class Test has a private member called c, if you don't have a c's setter, can you modify its value except constructor? (answer: no) How can you change the value of c?(answer: add a setter)