当前位置: 代码迷 >> Java相关 >> [求助]一个java程序问题?
  详细解决方案

[求助]一个java程序问题?

热度:126   发布时间:2007-03-21 12:46:10.0
[求助]一个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又该怎么办呢?---很简单,编译出错.

----------------解决方案--------------------------------------------------------

就是就是,人才也

有种想给你加精的冲动


----------------解决方案--------------------------------------------------------
你们都很厉害呀!!
----------------解决方案--------------------------------------------------------
丢~~你又不是新会员了~~~你还不了解这个论坛的荣誉是那个么?
----------------解决方案--------------------------------------------------------
这里真是高手如云!!!
----------------解决方案--------------------------------------------------------
  相关解决方案