A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 尤圣回 中级黑马   /  2012-9-24 14:33  /  2004 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

interface Playable
  { void play();}
  interface Bounceable
  { void play();}
  interface Rollable extends Playable, Bounceable
  {  Ball ball = new Ball("PingPang");}
  
  class Ball implements Rollable
  { private String name;
   public String getName()
   { return name;}
   public Ball(String name)
   { this.name = name; }
   Public void play()
   { ball = new Ball("Football"); //这里报错
System.out.println(ball.getName()); }

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
本帖最后由 李建强 于 2012-9-24 15:19 编辑
  1. Rollable接口中
  2. Ball ball = new Ball("PingPang");可以看成:
  3. public static final Ball ball = new Ball("PingPang");。
  4. ball类的方法play,试图改变改变ball的引用。
  5. final是不能被改变的,SO~~
复制代码

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
应该是 Ball ball = new Ball("Football");  少写一个Ball

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1 参与有奖

查看全部评分

回复 使用道具 举报
不能在接口中实例化类,接口中只有全局常量和抽象方法,由类来实现接口中的方法,你把接口改正后再把 ball = new Ball("Football"); 前加Ball就没问题了

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
{  Ball ball = new Ball("PingPang"); 和 { ball = new Ball("Football"); 比较一下就明白为什么报错了.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马