黑马程序员技术交流社区
标题:
各位看看,关于这代码错误的问题
[打印本页]
作者:
曹操
时间:
2012-8-30 00:14
标题:
各位看看,关于这代码错误的问题
这代码有错吗?错在哪里?
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());
}
}
复制代码
作者:
冯心程
时间:
2012-8-30 00:57
本帖最后由 冯心程 于 2012-8-30 00:58 编辑
第八行:Ball ball = new Ball("PingPang");
这个是接口内部的
接口内部的变量默认用public static final 修饰
它实际上是
public static final Ball ball = new Ball("PingPang");
所以ball的值是不能在第19行中改变的
作者:
赵云柯
时间:
2012-8-30 01:04
Ball
ball = new Ball("Football");//19行这里少了类型声明
虽然Playable, Bounceable两个接口都有play()方法,但是由于接口里面的方法都是抽象的,不存在调用接口方法的问题,所以子类Ball在实现接口时,可以直接覆盖play()方法,编译器不关心子类究竟覆盖的是哪个接口的play()方法。
作者:
黑马张旭明
时间:
2012-8-30 01:05
interface Rollable extends Playable, Bounceable {
Ball ball = new Ball("PingPang");
}
我是这样想的,不知道对不对,接口中的成员都有固定修饰符public static final,由于是静态的原因,毕竟Ball实现了Rollable接口得先加载Rollable,这时很可能在Ball = new Ball("pingpang");时 Ball这个类还没有完全载入。
作者:
寇龙飞
时间:
2012-8-30 01:11
主要是楼主代码要干嘛?
目测少了ball类型而报错。
public void play() {
//ball = new Ball("Football");
Ball ball = new Ball("Football");
System.out.println(ball.getName());
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2