访问控制符是一组限定类、域或方法是否可以被程序其它部分访问和调用的修饰符。
- Java用来修饰类的访问控制符只有public,表示类对外“开放”,类定义时也可以无访问修饰,则表示类只限于同一包中访问使用。
- 修饰类的成员的访问修饰符有3种:public、protected、private,还有一种是无修饰符的默认情况。
- 外界能访问某个类的成员的条件是:首先要能访问类,其次还要能访问类的成员。
1、公共访问控制符 public
- 作为类的修饰符,将类声明为公共类, 表明它可以被所有的其它类所访问和引用。
- 作为类的成员的访问修饰符,表明在其他类中可以无限制地访问该成员。
- 要真正做到类成员可以在任何地方访问,在进行类设计时必须同时满足两点:
- 没有给出访问控制符情形
- 该类只能被同一个包中的类访问和引用
3、私有访问控制符 private
用private修饰的域或方法只能在该类自身中访问,其子类也不能访问。(系统设计的安全性)
class Myclass {private int a; //私有变量void display() { System.out.println(a); }}public class test {public static void main(String arg[]) {Myclass my=new Myclass();my.a=5; java: a 在 Myclass 中是 private 访问控制my.display();}}class Myclass {private int a; //私有变量void set(int k) { a=k; }void display() { System.out.println(a); }}public class test {public static void main(String arg[]) {Myclass my=new Myclass();my.set(5);my.display(); 输出:5}}
4、 保护访问控制符 protected
用protected修饰的成员可以在三种类中所引用:
- 该类本身;
- 与它在同一个包中的其它类;
- 在其它包中的该类的子类。

文件1:PackageData.java(该文件存放在sub子目录下)package sub;public class PackageData {protected static int number=1;}文件2:Mytest.javaimport sub.*;public class Mytest {public static void main( String args[] ) {System.out.println("result="+PackageData.number);//编译错误!}}
| 同一类中 | 同一包中 | 不同包的子类中 | 其他 | |
|---|---|---|---|---|
| private | Yes | |||
| 默认 | Yes | Yes | ||
| protected | Yes | Yes | Yes | |
| public | Yes | Yes | Yes | Yes |
