java包机制
java对类的访问权限通过不同的访问修饰符来进行控制。
不同包的类只可以访问public修饰的类,不可以访问修饰符修饰的类,相对于下面的这个例子,就是将Student05类和Person01类的访问修饰符更改为public
package cn.zhz.Kind.dh; public class Student05 { }
package cn.zhz.Kind.dh; public class Person01 { }
package cn.zhz.Case.dh; import cn.zhz.Kind.dh.Person01; import cn.zhz.Kind.dh.Student05; public class Test01 { public static void main(String args){ Student05 student05 = new Student05(); Person01 Person01 = new Person01(); } }
如果采用默认修饰符的话,就算导入了包中的这个类还是会报错
例如这样的一个错误:
java: cn.zhz.Kind.dh.Person01在cn.zhz.Kind.dh中不是公共的; 无法从外部程序包中对其进行访问
同一个包中的类可以随意访问,也就是这种情况下的public和默认修饰符都是可以使用的,这种情况下加不加public都是可以的
package cn.zhz.Test.dh; public class Student06 { }
package cn.zhz.Test.dh; class Person2 { }
package cn.zhz.Test.dh; public class Test05 { public static void main(String[] args) { Student06 student06 = new Student06(); Person2 person2 = new Person2(); } }
这个就是访问权限对类的控制。
类的成员分别是成员变量(属性)和成员方法(行为方法),java中对类的成员进行访问权限控制有四种:
package cn.zhz.Kind.dh; //类可以通过public修饰 public class Student07 { //private修饰的类的成员,只可以本类进行访问 private int age; //默认修饰符修饰的类成员,本类可以访问 String name; //protected修饰符修饰的类的成员,本类可以访问 protected String address; //public修饰符修饰的类的成员,在哪里都可以被访问到 public char sex; public void m1(){ System.out.println(this.name); System.out.println(this.age); System.out.println(this.address); System.out.println(this.sex); } }
package cn.zhz.Case.dh; import cn.zhz.Kind.dh.Student07; public class Test02 { public static void main(String [] args){ //不同包的类只可以访问public修饰的类,不可以访问默认修饰符修饰的类 Student07 s = new Student07(); //默认修饰符修饰的类的成员,不可以被其他包的其他类访问 // System.out.println(s.name); //protected修饰符修饰的类的成员,不可以被其他包中的其他类访问 // System.out.println(s.address); System.out.println(s.sex); } }
package cn.zhz.Case.dh; import cn.zhz.Kind.dh.Student07; public class Test { public static void main(String [] args){ //同包的类既可以访问public修饰的类,也可以访问默认修饰符修饰的类 Student07 s = new Student07(); //其他类不可以调用Student07类private修饰的类成员(属性和方法) // s.age; //默认修饰符修饰的类成员,同包的其他类也可以访问 //protected修饰符修饰的类成员,同包的其他类也可以访问 // System.out.println(s.name); // System.out.println(s.address); s.m1(); } }