类中数据域的四种访问类型
- public 全访问类型,在类内部,子类当中,同一个包但是不同的类中,不同的包的类中都可以访问
- protect 局部访问, 在类内部,子类当中可以访问
- private 类内部访问,在类的内部访问,其他位置均不可访问
private修饰符的注意事项
- private不能用于修饰可修改的数据,例如某个带有set修改器的类
import java.util.Date;
public class Employee {
private Date date;
public Date getHireDay(){
return date;
}
}
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Employee harry = new Employee();
Date d = harry.getHireDay();
double tenYearsInMillSeconds = 10 * 365.25 * 24 * 60 * 60;
d.setTime(d.getTime() - (long)tenYearsInMillSeconds);
}
}
我们测试以上的类,getHireday返回了date的一个引用d,注意是引用,如果我们对d去做修改,那么就破坏了date的私有属性,因此java会报 Exception in thread "main" java.lang.NullPointerException 访问私有的错误
如果需要传递一个可变私有量的引用,需要传递修改它的修饰符或者传递拷贝
import java.util.Date;
public class Employee {
private Date date;
public Date getHireDay(){
return (Date)date.clone();
}
}