有参方法和无参方法以及引用类型的使用,以及代码该怎么读?

MikeDDT009 2017-03-31 09:53:23
不知道怎么回事,是我自己喜欢把简单问题复杂化还是什么的,最近总感觉非常的不对劲,在涉及到设置的方法是否要返回值,带参方法的类型,以及引用类型的各种使用。总是会去考虑这是引用,引用,老是在使用的时候回去纠结到底目前这个引用到底是哪个对象,引用是怎么来变来变去的,过于追究根底。昨天看了下JAVA编程思想里面,感觉一下简单的代码都看不懂了,具体举个例子吧。
书中的:P85页的代码,如下

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());
}

}

这段代码我看着感觉完全看不懂,虽然查看了单词好像是人吃苹果,虽然看着好像是这么一回事,我却会去考虑是怎么产生这种关联来书写出这种代码(自己写代码完全感觉不出这种关联性。。。),我自己从main方法开始看,字面像是人(建立了人的对象,在内存中占有位置,没有索引),接着调用了Person的eat这个方法,传进去一个苹果(建立了苹果的对象,在内存占位置没有索引),然后看到后面参数类型是Apple这个引用类型,自己看一看想这样考虑就自己绕晕了,然后就断档了,拿下棋来举例子的话,就是别人思考条理性,一条条的分析,而我是乱的,勉强走了一步没有下一步。
...全文
172 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
逗比123号 2017-04-01
  • 打赏
  • 举报
回复
慢慢学吧,这还是很基础的东西,可能你学了其他的知识后再回过头来看这块就很清楚了
开心每一日 2017-03-31
  • 打赏
  • 举报
回复
首先 第一步 new Person().eat(new Apple());的时候,看代码 public void eat(Apple apple){ Apple peeled = apple.getpeeled(); System.out.println("Yummy"); } 这时候相当于new Apple().getpeeled(); 然后看方法 Apple getPeeled(){ return Peeler.peel(this); 关于this的问题,因为是apple对象调用了这个问题,所以this就是调用者,即apple对象 再看方法 static Apple peel(Apple apple){     return apple;     } 此时apple是本身,返回本身,所以你最终获取的就是一开始“new apple();”的这个对象

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧