代码查错

修改:

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");"改变了ball的reference,而这里的ball来自Rollable interface,Rollable interface里的ball是public static final的,final的object是不能被改变reference的。因此编译器将在"ball = new Ball("Football");"这里显示有错。

时间: 2024-10-08 09:48:01

代码查错的相关文章

Java笔试题之《Java代码查错》

Java代码查错 1.abstract class Name {   private String name;   public abstract boolean isStupidName(String name) {}}     大侠们,这有何错误?     答案: 错.abstract method必须以分号结尾,且不带花括号.2.public class Something {   void doSomething () {       private String s = ""

JAVA 代码查错

1.abstract class Name { private String name; public abstract boolean isStupidName(String name){}} 大侠们,这有何错误? 答案: 错. abstract method 必须以分号结尾,且不带花括号. 2.public class Something { void doSomething () { private String s = ""; int l =s.length(); } } 有错

使用DBUnit框架数据库插入特殊字符失败的查错经历

本文记录的是使用DBUnit测试框架进行数据库数据插入时,插入特殊字符失败的查错经历.希望能对向我这样的小白同学们在遇到类似问题时,能够有一些启发.背景:在写跟数据库交互模块的单元测试,数据库表中的ext字段,需要先写入数据,然后再读取出来,进行处理.ext字段格式是key1CTRL^Dvalue1CTRL^CKey2CTRL^Dvalue2.使用DBUnit框架来做单元测试,DBUnit是一个基于junit扩展的数据库测试框架.此次项目里插入数据库的数据是以xml形式的文件来组织的.xml文件

诡异的SpriteKit 游戏查错

在Endless Runner 游戏中,做了一些atlas后,发现有个问题,当player跳跃起来的时候,发现他没有动画了,被默认的X图片代替.原来的图像是这样的. 在增加了一些动画后,我的效果就成这样了. 这个不知道为何?当时碰到这个问题,我去查看了我的player.h,而且去看了的一些提供action的一些方法,结果还是不对,最后发现这个动画是在初始化的时候遍历我们的atlas来提供的,所以去查了一下,终于找到了答案.原因:在我们的player sprite相关的类,player.m中,在我

Android应用测试工具ThreadingTest查错实例分析

1      ThreadingTest产品简介 ZOA公司研发的ThreadingTest智能型测试工具系列一期,是基于程序源代码的白盒测试工具.采取前端分析器和后端结果分析分离的技术路线,实现对多种语言的编译器级分析和多维度测试. ThreadingTest的核心思想来源于非线性复杂软件工程体系.通过ThreadingTest基于测试用例集与动态代码覆盖的双向追溯的专利技术,使得对于大型应用系统的维护和修改变得不再盲目和极易出错,使得对大型软件的系统测试期和维护期的测试过程从无量化依据到有明

Python自动化之下拉框,隐藏标签定位 代码&报错解决

python自动化:下拉框定位方法之select标签 style="display: none;"报错selenium.common.exceptions.ElementNotVisibleException: Message: element not visible: Element is not currently visible and may not be manipulated 界面源码:(禅道为例)排查:1)因为是隐藏的,需要操作其可见才可定位 2)若还是无法定位,请查看前

Solidworks api帮助代码报错 “特性说明符不是一个完整的语句。请使用行继续符将该特性应用于下列语句。“的解决办法!

相信大家经常会把solidworks api帮助中的代码直接贴出来直接使用,今天遇到段代码就无法使用.现分享一下经验: <ComVisibleAttribute(True)> _ Public Class clsPropMgr 上面的代码就会报错:"特性说明符不是一个完整的语句.请使用行继续符将该特性应用于下列语句." 怎么解决呢?其实很简单! 解决方法1: 两行合成一行 <ComVisibleAttribute(True)> Public Class clsP

在PHP项目中使用Standford Moss代码查重系统

Standford Moss 系统是斯坦福大学大名鼎鼎的代码查重系统,它可以查出哪些同学提交的代码是抄袭别人的,从而将提交结果拒之门外.它对一切希望使用该系统的人都是开放的,那么在PHP的项目中如何使用它呢? 下载Moss的PHP文件moss.php 您可以访问https://github.com/Phhere/MOSS-PHP 来下载moss.php,并将它放在您的第三方扩展库中 使用moss.php 通过下面的范例代码您就可以简单的做个moss小测试了 <?phpinclude("mo

Mark一下, dp状态转移方程写对,但是写代码都错,poj 1651 poj 1179

dp题: 1.写状态转移方程; 2.考虑初始化边界,有意义的赋定值,还没计算的赋边界值: 3.怎么写代码自底向上计算最优值 今天做了几个基础dp,全部是dp方程写对但是初始化以及计算写错 先是poj 1651 其实就是个赤裸裸的矩阵连乘,dp方程很容易写出 dp[i][j]=min(dp[i][k]+dp[k+1][j]+r[i]*c[k]*c[j],dp[i][j]); 先贴两个个二逼的代码,mark下自己多么的二逼: 二逼一:在计算的时候使用了还没有算出来的值,模拟下就知道第一重循环里算dp