public class Chapter5_test2 { /**
* @param args
*/
public static void main(String[] args) {
Apple a=new Apple();
Person p=new Person();
p.eat(a.getPeeled());//1@@
p.eat(a);//2@@
// TODO Auto-generated method stub }}
class Person{
public void eat(Apple apple){
Apple peeled=apple.getPeeled();
System.out.println("Yunm");
}
}
class Apple{
Apple getPeeled(){
return Peeler.peel(this);
}
}
class Peeler{
static Apple peel(Apple apple){
return apple;
}
}
输出结果是一样的1和2;
问题是注释1和2有什么区别,我觉得new Apple()的时候并没有调用getPeelde()方法 返回Apple对象啊。。为什么呢
解决方案 »
- [高分求解]Graphics问题,在鼠标drag的画线太闪了,请高人指点指点~ [有代码]
- 读取.jar
- 如何把html代码存到数据库里?
- FTP 的 LIST 命令获取文件信息,就是没有年份,怎么得到???
- 有偿转让Java即时通信工具源程序及设计文档
- RSS 2.0规范(中文版)
- 请问我保存字符到Oracle时,为什么存到数据库中的会自动变成该字符的AscII码??
- 谁知道Bits和LinkedList这2个类是做什么的?麻烦您说一下!!
- 调查一下,现在有多少人用 Together ControlCenter ?
- 说话就给分(这三个问题是一样,问三次就是想把分都给出去)
- 关于String字符串的比较。
- 保留字
p.eat(a);//2@@ 这苹果削了一次
打印的结果都是调用了Person中的eat()方法造成的。
p.eat(a);//2@@
对上面的语句这样是否好理解一些:
Apple b;
b=a.getPeeled();p.eat(b);
p.eat(a);
a, b 是一个对象,只是相当a于转了一圈。