Java提供了三个访问控制符:private、protected和public
private(当前类访问权限)
很显然,这个访问控制符用于修饰成员变量最合适,使用它来修饰成员变量就可以把成员变量隐藏在该类的内部。
default(包访问权限)
protected(子类访问权限)
public(公共访问权限)
外部类只能有两种访问控制级别:public和默认,外部类不能使用private和protected修饰,因为外部类没有处于任何类的内部,也就没有其所在类的内部、所在类的子类两个范围,因此private和protected访问控制符对外部类没有意义。
package chap5_3;
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
if (name.length() > 6 || name.length() < 2) {
System.out.println("您设置的人名不符合要求");
return;
} else {
this.name = name;
}
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age > 100 || age < 0) {
System.out.println("您设置的年龄不合法");
return;
} else {
this.age = age;
}
}
}
package chap5_3;
public class PersonTest1 {
public static void main(String[] args)
{
Person p=new Person();
p.setAge(1000);
System.out.println("未能设置age成员变量时:"+p.getAge());
p.setAge(30);
System.out.println("成功设置age成员变量后:"+p.getAge());
p.setName("李刚");
System.out.println("成功设置name成员变量后:"+p.getName());
}
}
运行结果
您设置的年龄不合法
未能设置age成员变量时:0
成功设置age成员变量后:30
成功设置name成员变量后:李刚
Java中某个类里包含了一个名为abc的实例变量,则其对应的setter和getter方法名应为setAbc()和getAbc()。JavaBean总是一个封装良好的类。
使用setter方法从而保证Person类的name和age两个实例变量不会出现与实际不符的情况。
进行程序设计时,应尽量避免一个模块直接操作和访问另一个模块的数据,模块设计追求高内聚,低耦合。
例如外部设备(主机板)只能通过内存条的金手指(提供一些方法供外部调用)来和内存条进行交互。
有些方法只用于辅助实现该类的其他方法,这些方法被称为工具方法,工具方法也应该使用private修饰。
如果某个类主要用作其他类的父类,该类里包含的大部分方法可能仅希望被其子类重写,而不向被外界直接调用,则应该使用protected修饰这些方法。