day14文字笔记
知识回顾
正课内容:
1、接口
是一种数据类型(引用),由interface定义,只能包含常量和抽象方法,接口不能被实例化(不能new 对象)
接口是需要被实现/继承的,实现类/派生类:必须重写接口中的所有抽象方法
一个类可以实现多个接口,用逗号进行分隔,若又继承又实现时,应先继承后实现
接口可以继承接口
1)演示接口的语法
interface Inter{
public static final int NUM = 5;//接口中只能包含常量与抽象方法
public abstract void show();//接口中只能包含常量与抽象方法
int Count = 5;//默认public static final
void test(){}//编译错误,接口中只能含有抽象方法
void say();//默认为抽象方法,abstract void say( );
}
2)演示接口的实现----类中实现接口
Class Aoo implement Inter{
public void test(){} //接口被实现时,抽象方法必须被重写
public void say(){}
}
3)演示多接口的实现
interface Inter1{
void a();//默认抽象方法
}
interfce Inter2{
void b();//默认为抽象方法
}
Class Boo implents Inter1,Inter2{
public void a(){}//实现接口后,抽象方法必须要重写
public void b(){}
}
4)演示接口继承接口
interface Inter3 extends Inter2 {
void c();//Inter3中有两个抽象方法void b(); void c();
}
2、设计规则
1.将派生类所共有的属性和行为,抽到超类中------抽共性
2.若派生类的行为都一样设计为普通方法
若派生类的行为不一样设计为抽象方法
3.将部分派生类共有的属性和行为,抽到接口中
----接口是对继承的单根性的扩展--------实现多继承
潜艇游戏第8天
1、深水炸弹入场
1)深水炸弹是由战舰发射出来的,所以在Battleship中设计shoot()发射深水炸弹
2)深水炸弹入场为事件触发的,所以在侦听器中重写KeyReleased()键盘弹起事件
----在keyReleased()中:
判断若按下的时空格键,则:获取深水炸弹对象,bomb扩容,装到最后一个元素上
2、战舰是根据按键左右移动
1)战舰左右移动是战舰的行为,所以在Battleship中设计moveLeft和moveRight
2)战舰左右移动为事件触发的,所以在侦听器中装KeyReleased()中
判断若按下的左键,则战舰左移,若按下的右键,则战舰右移
3、删除越界的海洋对象
1)行为:在SeaObject中设计isOutOfBounds()检测潜艇越界,在Bomb、Torpedo、Mine中重写
isOutOfBounds()检测深水炸弹,鱼雷,水雷越界
删除海洋越界是定时发生的,所以在run()中调用outOfBoundsAction()删除越界在
outOfBoundsAction()中:
遍历所有潜艇,判断若潜艇越界了,则将越界深水炸弹替换为最后一个元素,缩容
2)调用:
4、设计EnemyScore得分接口,ObserveSubmarine和TorpedoSubmarine实现此接口
设计EnemyAward奖励接口,MineSubmarine实现此接口
***错误的可能:
1、编译错误:只检查语法
2、异常:运行时发生
3、程序的运行
***如何调错:
1)快速锁定问题的方法
------先将功能全部注释掉,然后再一个个放开,放开哪个功能后出错,说明问题就出在哪个问题上
2)打桩:----先锁定问题出在哪,然后再打桩
System.out.println()