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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王玮 中级黑马   /  2012-12-29 20:47  /  1717 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王玮 于 2012-12-29 20:50 编辑
  1. interface Playable {
  2. void play();
  3. }
  4. interface Bounceable {
  5. void play();
  6. }
  7. interface Rollable extends Playable, Bounceable {
  8. Ball ball = new Ball("PingPang");
  9. }
  10. class Ball implements Rollable {
  11. private String name;
  12. public String getName() {
  13. return name;
  14. }
  15. public Ball(String name) {
  16. this.name = name;
  17. }
  18. public void play() {
  19. ball = new Ball("Football");
  20. System.out.println(ball.getName());
  21. }
  22. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1 神马都是浮云

查看全部评分

8 个回复

倒序浏览
接口里只能有常量和抽象方法
回复 使用道具 举报
java不支持多继承,只支持多实现,(07.interface Rollable extends Playable, Bounceable {

08.Ball ball = new Ball("PingPang");

})
回复 使用道具 举报
刘丰伟 发表于 2012-12-29 20:59
java不支持多继承,只支持多实现,(07.interface Rollable extends Playable, Bounceable {

08.Ball bal ...

好像支持 接口多继承,这句应该没错。
回复 使用道具 举报
本帖最后由 肖志锋 于 2012-12-29 21:15 编辑

你在第19行错了,你不应该再去给常量赋值的。
理由:在接口中的要不是public absrtract 修饰的抽象方法,抽象方法就不解释了;另一个是 public static final修饰的常量,这个不能2次赋值,而且必须马上赋值,所以第8行就是做的这个工作。还有第3个成员,不过我给忘记了,我就不说了,呵呵
你就算不写这些修饰符,虚拟机也会帮你加上去的,所以为了自己方便最好自己写代码的时候添加上去。


评分

参与人数 1技术分 +1 收起 理由
崔政 + 1

查看全部评分

回复 使用道具 举报
王玮 发表于 2012-12-29 21:00
好像支持 接口多继承,这句应该没错。

额,刚才在网上查了下,又结合毕老师说的,java之所以不能多继承是因为如果可以继承多个父类,并且父类中有相同方法时,子类不知道该调用哪个,但是接口里面的方法是抽象的,必须复写,不会出现不知道该继承哪个的情况!
回复 使用道具 举报
清水 中级黑马 2012-12-30 17:52:29
7#
本帖最后由 清冰 于 2012-12-30 17:53 编辑

额,还有个问题。
下面的代码。你在Rollable里面创建了Ball对象,但你的Ball类又要实现Rollable接口,这不是一个死循环么?
  1. interface Rollable extends Playable, Bounceable {
  2.         Ball ball = new Ball("PingPang");
  3. }

  4. class Ball implements Rollable {
  5.         private String name;

  6.         public String getName() {
  7.                 return name;
  8.         }

  9.         public Ball(String name) {
  10.                 this.name = name;
  11.         }

  12.         public void play() {
  13.                 ball = new Ball("Football");
  14.                 System.out.println(ball.getName());
  15.         }
  16. }
复制代码
回复 使用道具 举报
肖志锋 发表于 2012-12-29 21:13
你在第19行错了,你不应该再去给常量赋值的。
理由:在接口中的要不是public absrtract 修饰的抽象方法,抽 ...

thank you ~~~~~~~
回复 使用道具 举报
你好
TestInet.java:32: 无法为最终变量 ball 指定值
ball = new Ball("Football");
^
1 错误

通过错误提示很明显可以看出你在给一个final最终变量赋值。
呵呵,查看错误提示很容易找到问题所在。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马