对一个类或对象实现良好的封装,可以实现以下目的:
隐藏类的实现细节。
让使用者只能通过事先预定的方法访问数据,从而可以在该方法里加入控制逻辑,限制对属性不合理访问。
可进行数据检查,从而有利于保证对象信息的完整性。
便于修改,提高代码的可维护性。例4.16 定义Person类,实现良好的封装。
public class Person{
private String name;
private int age;
public void setName(String name) {
//要求用户名必须在2~6位之间
if (name.length() > 6 || name.length() < 2){
System.out.println("您设置的人名不符合要求");
}else{
this.name = name;
}
}
public String getName(){
return this.name;
}
public void setAge(int age){
//要求用户年龄必须在0~100之间
if (age > 100 || age < 0){
System.out.println("您设置的年龄不合法");
}else{
this.age = age;
}
}
public int getAge(){
return this.age;
}
}包名是有效地标识符即可,但从可读性规范角度来看,包名应该全部由小写字母组成。
为了避免不同公司之间类名的重复,Sun建议使用单位Internet域名倒写来作为包名,
package语句必须作为源文件的第一句非注释性语句,一个源文件只能指定一个包,该源文件中可以定义多个类,则这些类将全部位于该包下。
如果没有显示指定package语句,则处于无名包下。实际企业开发中,通常不会把类定义在无名包下。
隐藏类的实现细节。
让使用者只能通过事先预定的方法访问数据,从而可以在该方法里加入控制逻辑,限制对属性不合理访问。
可进行数据检查,从而有利于保证对象信息的完整性。
便于修改,提高代码的可维护性。例4.16 定义Person类,实现良好的封装。
public class Person{
private String name;
private int age;
public void setName(String name) {
//要求用户名必须在2~6位之间
if (name.length() > 6 || name.length() < 2){
System.out.println("您设置的人名不符合要求");
}else{
this.name = name;
}
}
public String getName(){
return this.name;
}
public void setAge(int age){
//要求用户年龄必须在0~100之间
if (age > 100 || age < 0){
System.out.println("您设置的年龄不合法");
}else{
this.age = age;
}
}
public int getAge(){
return this.age;
}
}包名是有效地标识符即可,但从可读性规范角度来看,包名应该全部由小写字母组成。
为了避免不同公司之间类名的重复,Sun建议使用单位Internet域名倒写来作为包名,
package语句必须作为源文件的第一句非注释性语句,一个源文件只能指定一个包,该源文件中可以定义多个类,则这些类将全部位于该包下。
如果没有显示指定package语句,则处于无名包下。实际企业开发中,通常不会把类定义在无名包下。