黑马程序员技术交流社区

标题: 程序有错误。。。。。求解答 [打印本页]

作者: 戴卫东    时间: 2014-4-16 10:09
标题: 程序有错误。。。。。求解答
interface Zhangsan {  
  void play();  
}   
  
interface Lisi{  
  void play();  
}   
  
interface Wangwu extends  Zhangwu, Lisi{  
  Man man= new Man("good!");  
}  
class Man implements Wangwu{  
  private String name;   
  
  public String getName() {  
    return name;  
  }   
  
  public Man(String name) {  
    this.name = name;         
  }   
  
  public void play() {  
    man = new Man("Football");  
    System.out.println(man.getName());  
  }  
}   
不知道哪里有错误啊,感觉哪里都没有错啊。能解释解释吗,谢谢了。

作者: sheng6699    时间: 2014-4-16 10:16
1   Man man= new Man("good!");//这里完整应该写  public static final .....。(这里是解题的关键);
2   man = new Man("good!");    //这里有问题。  这里改变了man的reference(引用),而这里的man来自     Wangwu interface,Wangwu interface里的man是public static final的,被final的object是不能被改变reference的。因此编译器将在" man = new Man("Football");"这里显示有异常。
作者: 坏米饭    时间: 2014-4-16 10:23
本帖最后由 坏米饭 于 2014-4-16 10:33 编辑


public static void main(String[] args) {


Man mainman = new Man("mainman");
mainman.play();
}
interface Zhangsan {  
  void play();  
}   

interface Lisi{  
  void play();  
}   

interface Wangwu extends  Zhangsan, Lisi{  //你敲成Zhangwu了。
  Man man= new Man("good!");  
}  
class Man implements Wangwu{  
  private String name;   

  public String getName() {  
    return name;  
  }   

  public Man(String name) {  
    this.name = name;         
  }   

  public void play() {  
   Man newman = new Man("Football");  //你没有在man前面写Man。如果你是想访问父类接口Wangwu的man,貌似不行。
   System.out.println(newman.getName());//结果是Football
   System.out.println(this.getName());//结果是mainman
   System.out.println(man.getName());//这样可以访问父类接口Wangwu的man,结果是good!
  }  
}   




作者: 戴卫东    时间: 2014-4-16 10:29
sheng6699 发表于 2014-4-16 10:16
1   Man man= new Man("good!");//这里完整应该写  public static final .....。(这里是解题的关键);
2  ...

原来是引用指向问题,顿悟了!!
作者: sheng6699    时间: 2014-4-16 10:30
戴卫东 发表于 2014-4-16 10:29
原来是引用指向问题,顿悟了!!

呵呵。。。。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2