相信大家看到标题都很拗口,这是神马东西啊。。。我还是拿代码演示吧。
写一个Date_hireDay类
package class_learn;
public class Date_hireDay {
private int date_hireDay;
Date_hireDay(){
date_hireDay = 5;
}
public int getDate_hireDay() {
return date_hireDay;
}
public void setDate_hireDay(int date_hireDay) {
this.date_hireDay = date_hireDay;
}
@Override
public String toString() {
return "Date_hireDay [date_hireDay=" + date_hireDay + "]";
}
}
写一个Employee类
package class_learn;
public class Employee {
private Date_hireDay hireDay;
Employee(){
hireDay = new Date_hireDay();
}
public Date_hireDay getHireDay() {
return hireDay;
}
public void setHireDay(Date_hireDay hireDay) {
this.hireDay = hireDay;
}
@Override
public String toString() {
return "Employee [hireDay=" + hireDay + "]";
}
}
再写一个Run_Employee类
package class_learn;
public class Run_Employee {
public static void main(String[] args) {
// TODO Auto-generated method stub
Employee ep = new Employee();
System.out.println(ep.getHireDay().getDate_hireDay());
Date_hireDay da = ep.getHireDay();
da.setDate_hireDay(6);
System.out.println(ep.getHireDay().getDate_hireDay());
}
}
实现
da 采用 Date_hireDay 里边的set()方法直接修改了 ep 中hireDay的值,这是不符合封装特性的!
因为修改ep中hireDay的值,只能通过ep 中的方法,而不能通过别的类的方法!!!
封装:实现封装的关键在于绝对不能让类中的方法直接地访问其他类的实例域!!!