黑马程序员技术交流社区

标题: 下面代码有什么错误 [打印本页]

作者: 孙铭泽    时间: 2012-8-23 22:10
标题: 下面代码有什么错误
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-24 08:13
interface Playable { void play();
}
interface Bounceable { void play();
}
interface Rollable extends Playable, Bounceable { Ball ball = new Ball("PingPang");          //( Ball ball 这里定义的Ball类的对象ball在大括号外是无法使用的)
}
class Ball implements Rollable { private String name; public String getName()
{ return name; }
public Ball(String name)
{ this.name = name; }
public void play()
{ Ball ball = new Ball("Football");                                   //故而,这里就需要从新将Ball写在ball前边,这样就可以了
System.out.println(ball.getName()); }
}

作者: 吴通    时间: 2012-8-24 21:37
楼上的你好,我按你的方法编译通过了,不过运行没有通过
接口Rollable 实现了接口Playable和接口Bounceable,为什么还能在接口里面新建一个类呢?
作者: 张忠豹    时间: 2012-8-25 22:52
interface Playable {
        void play();
}
interface Bounceable {
        void play();
}
interface Rollable extends Playable, Bounceable {
        Ball ball = new Ball("PingPang");   //首先,这句话是正确的,接口中是可以定义常量的,这里的ball就是如此
}

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所指向的内存地址,就归功于接口中的final关键字
                System.out.println(ball.getName());
        }
        //测试一下
        public static void main(String[] args) {
                ball.play();  //最后,如果还是不能信服的话,自己可以试一下,把该类中play方法中的ball = new Ball("Football");代码注释了,运行一下该代码
        }
}




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