类的访问控制符
- 在一个类的内部,所有的成员可以相互访问,访问控制符是透明的;
- 访问控制符是针对外部访问而言的。
外部访问包括两种方式
- 通过类名访问类内部的成员
- 通过类对象名访问类内部成员
public 公有的
- 可以被任何类访问。
protected 保护型的
- 可以被同包的同一个类访问。
- 可以被同包的不同的类访问。
- 可以被不同包的子类访问。
default 默认
- 可以被同包的同一个类访问。
- 可以被同包的不同的类访问。
private 私有的
- 可以被同包的同一个类访问。
名称 | private(私有) | default(默认) | protected(保护) | public(公共) |
---|---|---|---|---|
在同一个类中 | √ | √ | √ | √ |
在同一个包中 | √ | √ | √ | |
在子类中 | √ | √ | ||
在全局范围内 | √ |
例子:只检验private与public。
class A
{
private int i; //私有的
public int j; //公有的
protected int m; //保护型的
private void f() //私有的
{
//测试privat类型的f能不能访问其他类型的数据
i=1; //没有报错
//private类型的f访问privat类型的i。
j=2;//没有报错
//private类型的f访问public类型的j。
m=3;//没有报错
//private类型的f访问protected类型的m 。
//因为它们都在同一个类里面,所有成员可以相互访问。
}
protected void k() //保护型的
{//跟上面同理
}
public void g() //公有的
{//跟上面同理
}
}
class TestAccess
{
public static void main (String[] args)
{
A aa= new A();
//测试方法时,注释掉以下内容。
aa.i=10;//error会报错,因为i不能在A中被访问
aa.j=20;//不会报错,因为j是publi(公有的)能被其他类中的对象访问。
aa.m=22;//不会报错,因为m是保护型的。
}
}