oop面向对象第6天


笔记:
1.抽象方法:
1)由abstract修饰
2)只有方法的定义,没有方法具体的实现(连{}都没有)
2.抽象类:
1)由abstract修饰
2)包含抽象方法的类必须是抽象类
不包含抽象方法的类也可以声明为抽象类----我乐意
3)抽象类不能被实例化
4)抽象类是需要被继承的,派生类:
4.1)重写抽象类中的所有抽象方法--变不完整为完整
4.2)也声明抽象类------不常用
5)抽象类的意义:
5.1)封装所有派生类所共有的属性和行为--代码复用
5.2)为所有派生类提供了统一的类型------向上造型
5.3)可以包含抽象方法,为所有派生类提供统一的入口,
派生类的行为不一样,但入口是一致的
3.成员内部类:----单独应用的几率小
1)类中套类,外面的称为Outer外部类,里面的称为Inner内部类
2)内部类通常只服务于外部类,对外不具备可见性
3)内部类对象通常在外部类中创建
4)内部类中可以直接访问外部类的成员,包括私有的
内部类中有个隐式的引用指向了创建它的外部类对象
eg: 外部类名.this.成员变量/方法
4.匿名内部类:
1)若想创建一个类(派生类)的对象,并且该类只需要创建一个对象,
此时该类不必命名,称之为匿名内部类
2)在匿名内部类中访问外部的变量,该变量必须是final的
(jdk1.7(含)以前要求变量必须加final,jdk1.8开始不需要加final)


练习:
1)画对象
1.1)在FlyingObject类中设计抽象方法getImage()
1.2)在派生类中重写getImage()
1.3)在FlyingObject类中设计普通方法paintObject()
1.4)在天空Sky类中重写paintObject()
1.5)在World类中重写在JPanel类的paint()方法,
来调用对象的paintObject()
2)定时器

 

画对象分析步骤:
1)想画对象,一定要能找到对象具体的图片
每个对象都需要获取自己所对应的图片
意味着获取图片行为是所有派生类所共有的
-----将获取图片需要设计在超类中
每个派生类获取图片的行为都是不一样的
-----所以将获取图片getImage()的行为设计为抽象的
2)所有的派生类重写抽象方法getImage()
2.1)天空Sky中:
-----直接返回图片image就可以了
2.2)子弹Bullet:
-----若活着呢就返回image
-----若死了呢就可以删除了
2.3)小敌机/大敌机/小蜜蜂:
-----若活着呢就所返回images[0]
-----若死了呢,从第2张图片开始做图片切换
当换到最后一张图片时,可以删除了
2.4)英雄机:
-----若活着呢则images[0]和images[1]做切换
-----若死了呢,从第3张图片开始做图片切换
当换到最后一张图片时结束
3)获取图片行为完成后,可以画图片了
-----每个对象都能画图片的,将画的行为写在超类中
每个派生类画图片的方式都是一样的
-----超类的画图片的行为,设计为普通方法paintObject()
4)天空对象需要画两张,两张图片在轮转,
-----在天空类中重写超类的paintObject()方法
5)在World类中调方法即可

 

posted on 2017-10-30 12:51  小凡185  阅读(107)  评论(0)    收藏  举报

导航