最近在看一個項目,發現有個類以爲是多餘的,之後問了人才知道,原來那是引用,簡介使用了被引用的對象,修改裏面的數據。
下面給出一個例子,該例子除了有引用這個問題,還有繼承的問題。
包名:aa
父類:Yingyong
子類:YingyongSun
package aa;
import java.util.ArrayList;
import java.util.List;
public class Yingyong {
private List<String> lists;
public Yingyong(){
}
public List<String> getMs(){
if(this.lists == null){
lists = new ArrayList<String>(3);
}
return this.lists;
}
}
子類:
package aa;
public class YingyongSun extends Yingyong {
public YingyongSun(){
}
}
使用:另起一個類,在main方法裏面:
public static void main(String[] args) {
// TODO Auto-generated method stub
//---------------------
YingyongSun yySun = new YingyongSun();
List<String> yingyongImpl = yySun.getMs();
yingyongImpl.add("ni hao");
yingyongImpl.add("zhen de shi ying yong????");
for(int i=0;i<yySun.getMs().size();i++){
s(yySun.getMs().get(i));
}
}
子類繼承於父類,所以getMs()方法也適用於子類。
在main方法,其實yingyongImpl是一個引用,它add了東西,也意味着子類(父類也行)的List<String>的內容增加。
輸出結果:
ni hao
zhen de shi ying yong????
這裏有一篇文檔,可以讀讀: