黑马程序员技术交流社区
标题: 苹果削皮 这道编码的this指的是谁? [打印本页]
作者: 黑马-李权88 时间: 2014-12-24 08:22
标题: 苹果削皮 这道编码的this指的是谁?
大家好,这是一道苹果削皮的题,class Apple 中的 return Peeler.peel(this) ;
请问this代表谁呢?我画了个内存图
class Person3
{
public void eat(Apple apple)
{
Apple peeled=apple.getPeeled();
System.out.println("Yummy");
}
}
class Peeler{
static Apple peel(Apple apple)
{
//...remove peel
return apple;//peeled
}
}
class Apple{
Apple getPeeled()
{
return Peeler.peel(this);
}
}
public class PassingThis
{
public static void main(String[] args)
{
Apple aa= new Apple();
Person3 p3= new Person3();
p3.eat(aa);
}
}//out:Yummy
-
eat.png
(81.15 KB, 下载次数: 3)
作者: 青衫禅客 时间: 2014-12-24 14:19
个人感觉你代码逻辑有问题,苹果自己怎么会有削苹果的方法呢?!
这是我自己改过的代码:
class Person3
{
public void eat(Apple apple)
{
Peeler.getPeeled(apple);
System.out.println("苹果好好吃");
}
}
class Peeler{
static Apple getPeeled(Apple apple)
{
System.out.println("削过了");
return apple;
}
}
class Apple{
Apple()
{
System.out.println("我是一只小苹果");
}
}
public class PassingThis
{
public static void main(String[] args)
{
Apple aa= new Apple();
Person3 p3= new Person3();
p3.eat(aa);
}
}
作者: as604049322 时间: 2014-12-24 16:50
表示好无聊,,,我也无聊一次
- class PeelApple{
- public static void main(String[] args) {
- Apple red=new Apple("红");
- Apple green=new Apple("绿");
- new Person("张三",18).eatApple(red).peelApple(green).peelApple(red).eatApple(green).eatApple(red).eatApple(green).eatApple(red);
- }
- }
- class Person{
- String name;
- int age;
- Person(String name,int age){
- this.name=name;
- this.age=age;
- }
- public Person eatApple(Apple a){
- if(a.isTrue){
- if(a.peel){
- System.out.println(name+":苹果有皮,我不吃");
- }else{
- a.isTrue=false;
- System.out.println(name+":呵呵,"+a.color+"苹果真好吃。");
- }
- }else{
- System.out.println(name+":你传给我的苹果不存在,我怎么吃啊?");
- }
- return this;
- }
- public Person peelApple(Apple a){
- if(a.isTrue){
- if(a.peel){
- a.peel=false;
- System.out.println(name+":"+a.color+"苹果削皮成功");
- }else{
- System.out.println(name+":"+a.color+"苹果已经被削皮了,我不能再削了");
- }
- }else{
- System.out.println(name+":"+"你传给我的苹果根本就不存在,我怎么削皮啊?");
- }
- return this;
- }
- }
- class Apple{
- String color;
- boolean peel=true;//是否有皮
- boolean isTrue=true;//是否存在
- Apple(String color){
- this.color=color;
- }
- }
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |