1. 程式人生 > >JAVA_返回引用可變物件的訪問器方法避免破壞封裝性(get方法)

JAVA_返回引用可變物件的訪問器方法避免破壞封裝性(get方法)

如果需要返回一個可變物件的引用, 應該首先對他進克隆(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()); } }