首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java 基础有关问题

2012-01-31 
java 基础问题public class Chapter5_test2 {/** * @param args */public static void main(String[] args

java 基础问题

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对象啊。。为什么呢

[解决办法]
注释1是取出了对象的一个值设置给Person,注释2是把整个对象设置给了Person
[解决办法]
p.eat(a.getPeeled());//1@@ 这苹果削了两次
p.eat(a);//2@@ 这苹果削了一次
打印的结果都是调用了Person中的eat()方法造成的。
[解决办法]
p.eat(a.getPeeled());//1@@ 

把Apple类中的方法作为eat方法的实参

p.eat(a);//2@@ 

把Apple类的引用作为eat方法的实参

热点排行