JAVA_返回引用可變物件的訪問器方法避免破壞封裝性(get方法)
阿新 • • 發佈:2018-12-09
如果需要返回一個可變物件的引用, 應該首先對他進克隆(clone)。物件克隆是指存放在另一個位置上的物件副本。
import java.util.Date;
class b{
private Date day;
public b(){
this.day = new Date();
}
public Date getDay(){
return this.day;
}
}
class a{
private Date day ;
public a(){
this.day = new Date();
}
public Date getDay(){
//使用clone方法 返回的是一個存放在另一個位置上的物件副本
return (Date)this.day.clone();
}
}
public class demo{
public static void main(String[] args) {
a obj = new a();
Date d = obj.getDay();
System.out.println("使用了clone避免封裝被破壞的a類"+obj.getDay().getYear());
d.setYear(2000 );
System.out.println("使用了clone避免封裝被破壞的a類"+obj.getDay().getYear());
b obj_B = new b();
Date d_bDate = obj_B.getDay();
System.out.println("沒有使用了clone避免封裝被破壞的b類"+obj_B.getDay().getYear());
d_bDate.setYear(2000);
System.out.println("沒有使用了clone避免封裝被破壞的b類" +obj_B.getDay().getYear());
}
}