访问说明符主要用于限定类、类成员变量、类成员方法的作用域。Java语言支持的访问说明符包括public、protected、private和默认值(无关键字)。
public可以修饰类,也可以修饰成员变量和成员方法。如果一个类被声明为公共类(public),表明它可以被其他类访问和引用。这里的访问和引用是指这个类作为整体对外界是可见和可使用的。其他类中的程序可以创建这个类的对象、访问这个类内部可见的成员变量和调用它的可见方法。
一个类作为整体对其他类可见,并不能代表类内的所有属性和方法也同时对该类是可见的。前者只是后者的必要条件。类的属性和方法能否为其他类所访问,还要看这些属性和方法自己的访问说明符。
利用public修饰类、成员变量和成员方法的示例代码如下所示。
//定义公共类Person
public class Person {
//声明public修饰的变量
public String name;
//定义public修饰的方法
public void setName(String xm) {
name = xm;
}
}
程序分析: 由于被声明为公共类,Person类可以被任意类进行访问和引用;Person类的成员变量name和方法setName()也是由public修饰的,那么其他类创建Person类的对象后,就可以利用该对象访问类的成员变量name和调用类的成员方法setName()。
下面通过示例演示其他类如何使用Person类以及类中的变量和方法。
【例3-6】在TestPerson类中引用Person类。
功能实现: 在TestPerson类的主方法中创建Person类的对象,引用Person类的成员变量,调用Person类的成员方法。
//定义类TestPerson
public class TestPerson {
public static void main(String[] args) {
//在TestPerson类中,引用Person类
Person person1;
//创建Person对象
person1 = new Person();
//利用对象调用Person类的成员方法
person1.setName("张三");
//利用对象引用Person类的成员变量
String s1 = person1.name;
//输出s1的值
System.out.println(s1);
}
}
程序运行结果如图3-12所示。
图3-12 例3-6的运行结果
程序可以正常执行并输出结果,说明公共类Person可以被其他类引用,类中的公共变量和公共方法也可以通过Perosn类的对象在其他类中使用。
protected可以修饰成员变量和成员方法,但不能修饰顶层类。用protected修饰的变量和方法可以被该类自身、与它在同一个包中的其他类、其他包中该类的子类引用。
private可以修饰成员变量和成员方法,但不能修饰顶层类。用private修饰的成员变量和成员方法只能被该类自身使用,而不能被任何其他类使用。
没有使用上述三个访问说明符修饰的类、成员变量、成员方法,说明它们使用的是默认的访问说明符(friendly)。这种默认的访问说明符规定该类只能被同一个包中的类访问和引用,而不可以被其他包中的类使用。
注意事项 在Java语言中,friendly不是关键字。它是在没有指定访问说明符时,指出访问级别。但不能用friendly来声明类、变量或方法。
访问说明符的访问等级如表3-2所示。
表3-2 访问说明符的访问等级
注意事项 成员方法中定义的变量不能有访问说明符,有关包的详细描述见第4章。