day13文字笔记
正课:
1、成员内部类:成员内部类
内部类通常只服务外部类,对外不具备可见性
内部类对象通常是在内部类外部使用
内部类中可以直接访问外部类的成员,包括私有的,内部类中有个隐式的隐式的引用this指向了创建它的外部类
2、匿名内部类------简化内部类,简化代码的操作
若想创建一个派生类的对象,并且对象只被创建一次,此时该类不必命名,称为匿名内部类
匿名内部类中是不能修改外面的变量,因为该变量一定是final的
******面试题:
问:内部类中有.class吗?
答:有
潜艇游戏第7天:
1、潜艇入场:
潜艇对象是由窗口产生,所有将创建潜艇对象的方法设计在World—在World中设计nextSubmarine
窗口调用
潜艇入场是定时发生的,所以在run中调用submarineEnterAction实现潜艇入场
在submarineEnterAction
每400毫秒,获取潜艇对象obj,sunmarine扩容,obj装到末尾
在run中调用submarineEnterAction()后,调用repaint()来重画
2、雷入场:
雷对象是由潜艇产生的,所以在SeaObject中设计shootThunder()生成雷对象
雷入场是定时发生的,所以在run()中调用thunderEnterAction()实现雷入场
在thunderEnterAction()中:
每1000毫秒,遍历潜艇得到雷obj,thunders扩容,obj装到末尾
3、动起来:海洋对象移动
移动为所有对象共有的行为,所以在SeaObject中设计抽象方法step(),然后7个类进行重写
海洋对象移动是定时发生的,所以在run()中调用stepAction()实现海洋对象移动
在stepAction()中:
遍历潜艇,潜艇动,遍历雷雷动,遍历深水炸弹,深水炸弹动
自动发生:
1.定时器--------java给大家提供好的一个小零件
2.线程---------java提供
做功能的套路:
1、先写行为(方法)
若为某个对象所特有的行为,将方法设计在特定类中
若为所有对象的共有行为,将方法设计在超类中
2、窗口调用
若为定时发生的,在定时器中调用
若为事件触发的,则在侦听器中调用