day15文字笔记
知识回顾:
正课:
1、多态:
1) 同一类型的引用在指向不同的对象时,有不同的实现------行为的多态:cut()、run()、step()、getImage()所有的抽象方法一定
都是多态的
abstract class 人{ abstract void cut(); }
class 理发师{ public void cut(){}}
2) 同一个对象被造型为不同的类型时,有不同的功能 ----- 在Java中所有对象都是多态的?怎么理解?
2、强制类型转换
1)强制转换成功的条件
引用所指向的对象,就是该类型
引用所指向的对象,实现了该接口或者继承了该类
强转时若不符合上述两个条件,则发生ClassCastException类型转换异常
建议:在强转之前先通过instanceof
public class Aoo {}
public class Boo extends Aoo implements Inter{}
public class Coo extends Aoo{}
public static void main(String[] args) {
Aoo o = new Boo();//向上造型,超类Aoo的引用指向派生类的对象Boo()
Boo o1 =(Boo) o;//o是超类Aoo数据类型,o1是Boo数据类型,大到小得强转---满足引用所指对象是该类型
Inter o2 = (Inter) o;//满足引用所指对象实现了Inter接口
// Coo o3 = (Coo) o;
if (o instanceof Coo){//先用instanceof判断再做强转
Coo o4 =(Coo) o;
}else {
System.out.println("o不是Coo类型");
}
}
潜艇游戏第9天:
1、深水炸弹与潜艇的碰撞
行为:检测深水炸弹与潜艇碰撞的算法-------检测碰撞的算法—设计在超类中
在SeaObject中设计一个碰撞算法isHit()检测对象的碰撞,goDead()海洋对象去死
在Battleship中设计addLife()增加命
若撞上了:
潜艇去消失,深水炸弹去消失
打掉的是侦察潜艇,玩家得10分
打掉得是鱼雷潜艇,玩家得40分
打掉得是水雷潜艇,玩家得1条命
深水炸弹和潜艇碰撞是定时发生,在bombBangAction()
2、画分和画命
能用父类绝不要用子类!因为可以进行造型