黑马程序员技术交流社区

标题: 为什么编译器将在"ball = new Ball("Football");"这里显示有错? [打印本页]

作者: 杨海波    时间: 2012-6-1 22:15
标题: 为什么编译器将在"ball = new Ball("Football");"这里显示有错?
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-6-1 22:26
public void play() {
        ball = new Ball("Football");
       System.out.println(ball.getName());
   }
}
应该定义成:
Ball ball = new Ball("Football");

作者: 袁錦泰    时间: 2012-6-1 22:29
本帖最后由 袁錦泰 于 2012-6-1 22:36 编辑
  1. package cn.yuanjintai.base;

  2. interface Playable {

  3.         void play();

  4. }

  5. interface Bounceable {

  6.         void play();

  7. }

  8. interface Rollable extends Playable, Bounceable {

  9.         Ball ball = new Ball("PingPang");//<span style="color: Red;">public static final</span> Ball ball = new Ball("PingPang");

  10. }

  11. class Ball implements Rollable {

  12.         private String name;

  13.         public String getName() {

  14.                 return name;

  15.         }

  16.         public Ball(String name) {

  17.                 this.name = name;

  18.         }

  19.         public void play() {

  20.                 ball = new Ball("Football");

  21.                 System.out.println(ball.getName());

  22.         }

  23. }
复制代码
接口这一个部分你如果学得够扎实,这个问题就很容易解释.
被final修饰的变量是不可以在后面重新赋值的.
还有你的代码能不能写得整齐一点,谢谢合作.

作者: 杨海波    时间: 2012-6-1 22:54
哥们 不好意思 我是急了点 一下没忍住就发了出去




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2