麻烦大神们看看

来源:-

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.

写回答 关注

2回答

  • 产品经理不是经理
    2015-12-30 12:24:13
    已采纳

    让fish的引用指向你传入的s的引用,

    因为fish.w = fish.w+m,这里fish.w=1+120给w重新赋值了啊,而fish和redFish指向的是同一个对象,你改变了成员变量的值,当用redFish和lake里的fish去访问的时候,结果自然是121

    ShallH... 回复产品经理不是...

    你好,那Lake类中的Fish fish 又是什么意思呢?

    2015-12-30 15:30:39

    共 6 条回复 >

  • 收拾好鑫情
    2015-12-30 14:10:12

    Fish s就是一个参数而已,跟int x是一样的

    redFish.w是121是因为你通过foodFish()修改了redFish这个对象的w值

    ShallH...

    谢谢。

    2015-12-30 15:28:26

    共 1 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530554 学习 · 6091 问题

查看课程

相似问题