[求助]一个java程序问题?
请问这个程序怎么改才能改的正确,我知道是错误的,但现在不知道该怎么改了,请高手指点一下
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());
}
}
搜索更多相关的解决方案:
java
----------------解决方案--------------------------------------------------------
[CODE]interface Playable {
void play();
}
interface Bounceable {
void bounce();
}
interface Rollable extends Playable, Bounceable {
void roll();
}
class Ball implements Rollable {
private String name;
public String getName() {
return name;
}
public Ball(String name) {
this.name = name;
}
public Ball(){
}
public void play() {
System.out.println("I am playing!!");
}
public void bounce(){
System.out.println("I am bouncing!");
}
public void roll(){
System.out.println("I am rolling!");
}
public static void main(String[] args){
Rollable ball=new Ball();
ball.play();
ball.bounce();
ball.roll();
}
}[/CODE]
这样就可以运行了,仔细体会一下接 口的定义和作用
[此贴子已经被作者于2007-3-21 14:38:13编辑过]
----------------解决方案--------------------------------------------------------
public Ball(String name) {
this.name = name;
}
Rollable ball=new Ball();
汗.............
----------------解决方案--------------------------------------------------------
错在我加注释的那两行
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");
Ball ball = new Ball("Football");
System.out.println(ball.getName());
}
}
----------------解决方案--------------------------------------------------------
,看错了,以为有一个无参构造函数呢
还有,那么多个接口同一个方法,什么意思,弄错了吧
Bounceable表示它会bounce啊
Rollable表示它会roll啊
----------------解决方案--------------------------------------------------------
首先要弄清除为什么说JAVA没有了多继承要比C++更加简单和强壮
如果说 ClassA 和 ClassB 都拥有 void hello(){} 方法,而ClassC去同时继承ClassA与ClassB,那么你认为ClassC会执行A的方法还是B的呢?
这就是一个很典型的多继承的弊病
所以JAVA决定废弃这个功能从而获取更健壮的语法
看现在,InterfaceA 和 InterfaceB 都定义有 void hello(); 方法,而ClassX同时实现了接口A和B,那么ClassX会实现的是A的方法呢还是B的方法呢?
其实动动脑就知道,这两个方法都是一样的,我实现那个不可以?
扩展一下
如果InterfaceA定义的是 String hello();方法
而 InterfaceB定义的是 void hello(); 方法,那么ClassX又该怎么办呢?---很简单,编译出错.
----------------解决方案--------------------------------------------------------
就是就是,人才也
有种想给你加精的冲动
----------------解决方案--------------------------------------------------------
你们都很厉害呀!!
----------------解决方案--------------------------------------------------------
丢~~你又不是新会员了~~~你还不了解这个论坛的荣誉是那个么?
----------------解决方案--------------------------------------------------------
这里真是高手如云!!!
----------------解决方案--------------------------------------------------------