Java访问权限,
Java访问权限,
Java访问权限
分类: Java基础2008-09-01 16:48 512人阅读 评论(0) 收藏 举报一.Java访问权限饰词(access specifiers)
Java有public、protect、friendly、private四种访问权限,并且这四访问权限的访问范围越来越小。
1. friendly
1)如果一个class内的数据成员或方法没有任何权限饰词,那么它的缺省访问权限就是friendly。同一个package内的其它所有classes都可以访问friendly成员,但对package以外的classes则形同private。
2)对于同一个文件夹下的、没有用package的classes,Java会自动将这些classes初见为隶属于该目录的default package,可以相互调用class中的friendly成员。如以下两个class分别在同一个文件夹的两个文件中,虽然没有引入package,但隶属于相同的default package。
- class StudentInfo {
- //一下方法缺省为friendly
- void printInfo() {
- System.out.println("Info...");
- }
- }
- public class StudentManagementSys {
- public static void main(String[] args) {
- StudentInfo studentInfo = new StudentInfo();
- studentInfo.printInfo();
- }
- }
2. public
可以被任何class调用
3. private
private成员只能在成员所属的class内被调用,如:
- class Student {
- //构造方法被声明为private,只能在类StudentInfo中调用
- private Student() {}
- //缺省为friendly,可以在同一个包中的其他类调用
- Student(String name) {
- //...
- }
- static Student getStudent() {
- return new Student();
- }
- }
- public class StudentManagementSys {
- public static void main(String[] args) {
- //类Student中构造方法Student()是private的,所以不能用它进行初始化
- //Student student = new Student();非法!
- //Student(String)是friendly的,可以在这里调用
- Student student1 = new Student("Yang");
- Student student2 = student1.getStudent();
- }
- }
4. protected
具有friendly访问权限的同时,又能被subclass(当然包括子孙类,即子类的子类)所访问。即,既能被同一package中的classes访问,又能被protected成员所在class的subclass访问。
二.Class的访问权限
1.Class同样具有public、protect、friendly、private四种访问访问权限:
1)public:在任何地方都可被使用
2)protect、private:除了它自己,没有任何class可以使用,所以class不能是protected或private(inner class除外)
3)friendly:同一个package中的classes能用
2. 如何调用构造函数被声明为private的class
1)用static函数
2)用Singteton模式
- //静态函数方法
- class Student {
- private Strudent() {}
- public static Student getStudent() {
- return new Student();
- }
- public void printInfo(String info) {
- System.out.println(info);
- }
- }
- //"Singleton"模式
- class Student {
- private static Student student = new Student();
- private Strudent() {}
- public static Student getStudent() {
- return student;
- }
- public void printInfo(String info) {
- System.out.println(info);
- }
- }
- public class StudentManagementSys {
- public static void main(String[] args) {
- //Student student1 = new Student();非法!
- Student student2 = Student.getStudent();
- student2.printInfo("Student2");
- }
- }
相关文章
- 暂无相关文章
用户点评