ShallHurk
2015-12-30 11:37
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); //请问这个结果怎么得来?
System.out.println(lake.fish.w);输出结果为1 121 121.
让fish的引用指向你传入的s的引用,
因为fish.w = fish.w+m,这里fish.w=1+120给w重新赋值了啊,而fish和redFish指向的是同一个对象,你改变了成员变量的值,当用redFish和lake里的fish去访问的时候,结果自然是121
Fish s就是一个参数而已,跟int x是一样的
redFish.w是121是因为你通过foodFish()修改了redFish这个对象的w值
Java入门第二季
531293 学习 · 6327 问题
相似问题