欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java访问权限,

来源: javaer 分享于  点击 7182 次 点评:250

Java访问权限,


Java访问权限

分类: Java基础 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。

  1. class StudentInfo {
  2.     //一下方法缺省为friendly
  3.     void printInfo() {
  4.         System.out.println("Info...");
  5.     }
  6. }
  7. public class StudentManagementSys {
  8.     public static void main(String[] args) {
  9.         StudentInfo studentInfo = new StudentInfo();
  10.         studentInfo.printInfo();
  11.     }
  12. }

2. public

   可以被任何class调用

3. private

   private成员只能在成员所属的class内被调用,如:

  1. class Student {
  2.     //构造方法被声明为private,只能在类StudentInfo中调用
  3.     private Student() {}
  4.     //缺省为friendly,可以在同一个包中的其他类调用
  5.     Student(String name) {
  6.         //...
  7.     }
  8.     static Student getStudent() {
  9.         return new Student();
  10.     }
  11. }
  12. public class StudentManagementSys {
  13.     public static void main(String[] args) {
  14.         //类Student中构造方法Student()是private的,所以不能用它进行初始化
  15.         //Student student = new Student();非法!
  16.         //Student(String)是friendly的,可以在这里调用
  17.         Student student1 = new Student("Yang");
  18.         Student student2 = student1.getStudent();
  19.     }
  20. }

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模式

  1. //静态函数方法
  2. class Student {
  3.     private Strudent() {}
  4.     public static Student getStudent() {
  5.         return new Student();
  6.     }
  7.     public void printInfo(String info) {
  8.         System.out.println(info);
  9.     }
  10. }
  11. //"Singleton"模式
  12. class Student {
  13.     private static Student student = new Student();
  14.     private Strudent() {}
  15.     public static Student getStudent() {
  16.         return student;
  17.     }
  18.     public void printInfo(String info) {
  19.         System.out.println(info);
  20.     }
  21. }
  22. public class StudentManagementSys {
  23.     public static void main(String[] args) {
  24.         //Student student1 = new Student();非法!
  25.         Student student2 = Student.getStudent();
  26.         student2.printInfo("Student2");
  27.     }
  28. }

相关文章

    暂无相关文章
相关栏目:

用户点评