爱问知识人 爱问教育 医院库

一个java程序问题?

首页

一个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) { 
         = name;        
    }
  public void play() { 
       ball = new Ball("Football");
        intln( tName());
    }
}

提交回答
好评回答
  • 2007-03-21 16:06:45
      程序代码:
    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) { 
             = name;        
        }
       public Ball(){
        }
      public void play() { 
            intln("I am playing!!");
        }
      public void bounce(){
             intln("I am bouncing!");
        }
      public void roll(){
             intln("I am rolling!");
        }
      public static void main(String[] args){
            Rollable ball=new Ball();
             ay();
             unce();
             ll();
        }
    }
    这样就可以运行了,仔细体会一下接 口的定义和作用
    =================================================
    public Ball(String name) { 
             = name;        
        }
        Rollable ball=new Ball();
    =================================================
    首先要弄清除为什么说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又该怎么办呢?---很简单,编译出错。
       。

    D***

    2007-03-21 16:06:45

其他答案

    2007-03-21 13:05:50
  •     错误行:倒数第四行!
      错误描述:cannot assign a value to final varible
                (不能为一个final变量重新赋值)
      原因:1。用final修饰的变量,一经赋值就不能更改!
            2。
      在接口里面定义了变量,就相当于是用final修饰了,其值也不能改变!类也是一种数据类型,所以ball也是变量。 3。一般在接口内只定义没有主体的方法,不要求实现! 改正:倒数第四行更改为:Ball ball=new Ball("Football"); 还要在Ball类里加上main方法: pubic static void main(String[] args) { ay(); } 运行结果是打印出football。
       也可直接将倒数第四行去掉, 运行结果是打印出pingpong。

    1***

    2007-03-21 13:05:50

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 178-197
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):