java编程自学记录(day09)

抽象类
 1)抽象方法:只有方法名和参数列表,没有方法体。
 用于描述抽象的功能,多用于功能设计。定义软件之间约定的功能
 eg:
  Timer类约定,在适合时候调用TimerTask的抽象方法run()。
  使用Timer只需要实现run方法就可以实现定时任务。叫做Timer定时地“回调”run方法实现
 定时任务
 2)一般把包含抽象方法的类定义为抽象类
 3)可以定义变量不能直接实例化。
 4)只能被继承,具体类继承抽象类时必须实现全部的抽象方法
 
接口
 1)相当于所有方法都是抽象方法,所有属性都是常量的抽象类
 2)接口中只能声明常量和抽象方法
 3)可以使用接口定义变量,可以引用具体类的实例
 4)接口不能直接实例化
 5)具体类实现接口必须实现全部的抽象方法:接口约定了具体类的方法,约定了类的外部行为。
 6)接口可以集成接口
 7)类可以实现多个接口,接口和实现类是父子类型关系。
 
内部类
 1)定义在内部的类:用于在外部类中封装类的定义
 2)内部类可以共享外部类的属性和方法。
 eg:
  定时器任务的实现,经常采用内部类实现。
  
匿名内部类(匿名类)
 1)语法非常简洁:new ClassName(构造器参数列表){方法体}
 2)匿名类容易与创建对象混淆,这里需要注意。
 3)匿名类是集成父类型并同时实例化为子类对象,没有子类类名。
 4)匿名类可以继承一般类,抽象类,也可以实现接口。

继续贪吃蛇
 Cell是数据格式,是数据结构
 Worm是核心数据和算法的封装,包括爬行,碰撞,吃食物等
 TestCase是核心业务数据的测试案例,必须严格实现通过
 WormStage:是蛇的绘制面板,嗨充当了软件业务流程控制。控制了定时任务处理和键盘输入
  流程控制creepTo
 JFrame只是窗口逻辑。将WormStage显示出来
 
其它知识点:
(1)接口可以实现软件组件之间的插接组装关系。
(2)因为匿名类语法简洁,工作中非常常用,书写时要注意括号配对情况。
(3)打印一个数组一定要用Arrays.toString()函数进行转换,否打印出的是数组的地址。
 当类1的元素包含数组时,在类1中重写了toString方法,类1的实例化对象作为类2的成员变量,类2
 中重写toString方法,只需要在类1的对象前加上   ""+  即可以字符串的形式显示。
(4)想不通时,就把东西画在纸上,动手看看,能够比较清楚地想到。

贪吃蛇总结:
自己写贪吃蛇时出的问题:
(1) 在边界时还没到最后一步就直接死掉了。
现象:自动爬行时,可以观察到蛇能够到达边界,但是此时按方向键没有效果。
原因:键盘响应的撞击检测中没有实时更新键盘新输入的方法,造成键盘事件已经触发,但还是按照之前的方向
 去检测撞击,导致在边界时无法控制。
(2) 撞击检测在x和y轴远离轴线的舞台边沿范围取错,应该取>=COLS,取成了>COLS
(3) 撞击检测中没有添加反方向判断。
原因:只关注到了边沿和吃自己,没有关注到反方向

总结:在进行软件测试时,一定要将所有情况都测试一遍,不然出现上面的错误很难发现。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值