java中public和缺省这两个访问权限的根本区别?
为了区分开public和缺省的区别,我们要引进包(package)的概念。包就像咱们磁盘上的目录一样,马克-to-win。package a;就是定义说当前的目录为a。底下编的任何的类,都会出现在当前的这个目录a里。import b;就是导入b目录当中的类资源,因为我们在运行当前目录当中的类时,需要b目录当中的类资源。导入之后,b目录当中的类随便用。
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。
eclipse当中如何添加包?在new class时,其中有个项, 在其中写上你的包名就可以了。注意再做底下的实验时,要分别new两个类,这样系统会产生两个文件。
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权限才可以工作, 因为是在不同的包里
ob.b = 20;
// ob.c = 100; // 错误Error!, c是私有的
ob.setc(100); // OK
System.out.println("b,and c: " + " " + ob.b + " " + ob.getc());
}
}
输出结果:
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)