访问控制符是一组限定类、域或方法是否可以被程序其它部分访问和调用的修饰符。
- 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.java
import 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 |