//出自Thinking?in?Java?4
//它是如何調(diào)用的?參數(shù)是如何傳遞的?
//這Apple哪來(lái)的?不是應(yīng)該是int?chat?String之類的嗎
class?Person?{
??public?void?eat(Apple?apple)?{
????Apple?peeled?=?apple.getPeeled();
????System.out.println("Yummy");
??}
}
class?Peeler?{
??static?Apple?peel(Apple?apple)?{
????return?apple;
??}
}
class?Apple?{
??Apple?getPeeled()?{
???return?Peeler.peel(this);?
???}
}
public?class?PassingThis?{
??public?static?void?main(String[]?args)?{
????new?Person().eat(new?Apple());
??}
}
3 回答

sanlelele
TA貢獻(xiàn)8條經(jīng)驗(yàn) 獲得超3個(gè)贊
//這里出現(xiàn)的apple?↑↑↑↑ class?Apple?{ ??Apple?getPeeled()?{ ??//這里的this代指本類,就是這個(gè)apple類 ???return?Peeler.peel(this);? ???} }
//申請(qǐng)一個(gè)類型為apple的變量名字叫做peeled //由于etPeeled()方法是靜態(tài)的,所以可以直接由類名調(diào)用. Apple?peeled?=?apple.getPeeled();

bug俠
TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超0個(gè)贊
感謝2位
但是我最后還是靠輸出它們的值才知道這程序到底是怎么運(yùn)作的
peeled和apple和peeler.peel(this)都是指向同一個(gè)內(nèi)存地址的

bug俠
TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超0個(gè)贊
還有那個(gè)this是指哪個(gè)參數(shù)
這個(gè)程序的執(zhí)行順序根本摸不透啊
各種返回,各種對(duì)象,各種參數(shù)
添加回答
舉報(bào)
0/150
提交
取消