zoukankan      html  css  js  c++  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) {
        this.name = name;     
      }
      public void play() {
        ball = new Ball("Football");
        System.out.println(ball.getName());
      }
    }
    这个错误不容易发现。
    答案错。"interface Rollable extends Playable, Bounceable"没有问题。interface可继承多个interfaces,所以这里没错。问题出在interface Rollable里的"Ball ball = new Ball("PingPang");"任何在interface里声明的interface variable (接口变量,也可称成员变量),默认为public static final。也就是说"Ball ball = new Ball("PingPang");"实际上是"public static final Ball ball = new Ball("PingPang");"。在Ball类的Play()方法中,"ball = new Ball("Football");"改变了ballreference,而这里的ball来自Rollable interfaceRollable interface里的ballpublic static final的,finalobject是不能被改变reference的。因此编译器将在"ball = new Ball("Football");"这里显示有错。

  • 相关阅读:
    CODEVS4650 破损的键盘
    洛谷P1656 炸铁路
    洛谷 P3225 [HNOI2012]矿场搭建
    1265 四点共面
    1406: [AHOI2007]密码箱
    1193: [HNOI2006]马步距离
    1800: [Ahoi2009]fly 飞行棋
    1923: [Sdoi2010]外星千足虫
    I
    2017CCPC秦皇岛G ZOJ 3987Numbers(大数+贪心)
  • 原文地址:https://www.cnblogs.com/chengbao/p/4840802.html
Copyright © 2011-2022 走看看