黑马程序员技术交流社区

标题: 测试题 [打印本页]

作者: 进击的大鹏    时间: 2014-9-13 21:32
标题: 测试题
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() {
        //x = 20;
        ball = new Ball("Football");
        System.out.println(ball.getName());
    }
}
这段代码错哪里了,面试题
作者: 逍遥呆    时间: 2014-9-13 23:52
本帖最后由 逍遥呆 于 2014-9-13 23:56 编辑

接口中应该不能创建子类对象吧。而且接口中的成员都有固定修饰符。这个Rollable接口里面的 Ball ball = new Ball("PingPang");不应该在这里。
作者: 苏乞儿    时间: 2014-9-14 00:28
在interface Rollable中定义了Ball ball是一个public static final类型的成员变量。final修饰了的引用型变量Ball,但是在下边的class Ball中又对引用ball重新建立了对象,并初始化,这是不对的,final修饰后他就不能再建立对象了。单例设计模式中的饿汉式就是用的这种思想。。。表述不清,楼主参考一下啊。。。主要是接口中的变量都是public static final修饰的。




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