麻煩大神們看看
class?Fish{ int?w?=?1; } class?Lake?{ Fish?fish; void?setFish(Fish?s){???//Fish?s表示什么意思? fish?=?s; } void?foodFish(int?m){ fish.w?=?fish.w+m; } } public?class?E?{ public?static?void?main(String[]?args)?{ //?TODO?Auto-generated?method?stub Fish?redFish?=?new?Fish(); System.out.println(redFish.w); Lake?lake?=?new?Lake(); lake.setFish(redFish); lake.foodFish(120); System.out.println(redFish.w);??//請問這個(gè)結(jié)果怎么得來? System.out.println(lake.fish.w);
輸出結(jié)果為1 121 121.
2015-12-30
讓fish的引用指向你傳入的s的引用,
因?yàn)閒ish.w?=?fish.w+m,這里fish.w=1+120給w重新賦值了啊,而fish和redFish指向的是同一個(gè)對象,你改變了成員變量的值,當(dāng)用redFish和lake里的fish去訪問的時(shí)候,結(jié)果自然是121
2015-12-30
Fish s就是一個(gè)參數(shù)而已,跟int x是一樣的
redFish.w是121是因?yàn)槟阃ㄟ^foodFish()修改了redFish這個(gè)對象的w值