A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 进击的大鹏 中级黑马   /  2014-9-13 21:32  /  947 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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());
    }
}
这段代码错哪里了,面试题

2 个回复

正序浏览
在interface Rollable中定义了Ball ball是一个public static final类型的成员变量。final修饰了的引用型变量Ball,但是在下边的class Ball中又对引用ball重新建立了对象,并初始化,这是不对的,final修饰后他就不能再建立对象了。单例设计模式中的饿汉式就是用的这种思想。。。表述不清,楼主参考一下啊。。。主要是接口中的变量都是public static final修饰的。
回复 使用道具 举报
本帖最后由 逍遥呆 于 2014-9-13 23:56 编辑

接口中应该不能创建子类对象吧。而且接口中的成员都有固定修饰符。这个Rollable接口里面的 Ball ball = new Ball("PingPang");不应该在这里。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马