Shoot射击游戏第一天:
1.创建了6个对象类,创建World类测试
Shoot射击游戏第二天:
1.创建6个对象类的构造方法,在World中测试
Shoot射击游戏第三天:
1.设计小敌机数组、大敌机数组、小蜜蜂数组、子弹数组,并测试
2.设计超类FlyingObject,6个对象类继承超类
3.给超类FlyingObject设计两个构造,6个对象类分别调用超类构造
Shoot射击游戏第四天:
1.将小敌机数组、大敌机数组、小蜜蜂数组合为FlyingObject数组,并测试
2.在6个对象类中重写step()移动
3.画窗口
回顾:
1.引用类型数组:
Student[] stus = new Student[3]; //创建学生数组对象
stus[0] = new Student("zhangsan",26,"LF"); //创建学生对象
stus[1] = new Student("lisi",26,"LF");
int[][] arr = new int[3][];
arr[0] = new int[2];
2.继承:
代码复用、extends
超类:共有的 派生类:特有的
派生类继承超类后,派生类具有:超类的+派生类的
一个超类可以有多个派生类,一个派生类只能有一个超类-单一继承
传递性
构造派生类之前必须先构造超类
派生类构造中若自己不调用超类的构造,则默认super()调超类无参构造,
若自己调了超类构造,则不再默认提供
3.super:指代当前对象的超类对象
super的用法:
1)super.成员变量名-------------访问超类的成员变量
2)super.方法名()---------------调用超类的方法
3)super()----------------------调用超类的构造方法
4.null:空,没有指向任何对象
若引用的值为null,则该引用不能再进行任何操作了
若操作则发生NullPointerException空指针异常
笔记:
1.向上造型:
1)超类型的引用指向派生类的对象
2)能点出来什么,看引用的类型
2.方法的重写(Override):重新写、覆盖
1)发生在父子类中,方法名称相同,参数列表相同,方法体不同
2)重写方法被调用时,看对象的类型
3)遵循"两同两小一大"原则:-----------了解
3.1)两同:
3.1.1)方法名称相同
3.1.2)参数列表相同
3.2)两小:
3.2.1)派生类方法的返回值类型小于或等于超类方法的
1)void时,必须相等
2)基本类型时,必须相等
3)引用类型时,小于或等于
3.2.2)派生类方法抛出的异常小于或等于超类方法的-----异常之后
3.3)一大:
3.3.1)派生类方法的访问权限大于或等于超类方法的-----明天讲
3.重写与重载的区别:---------常见面试题
1)重写(Override):
1.1)发生在父子类中,方法名称相同,参数列表相同,方法体不同
1.2)遵循"运行期"绑定,看对象的类型来调用方法
2)重载(Overload):
2.1)发生在一个类中,方法名称相同,参数列表不同,方法体不同
2.2)遵循"编译期"绑定,看参数/引用的类型来绑定方法
画窗口
swing相关:
1)JFrame:窗口(相框)
2)JPanel:面板(相板)
C/S:客户端/服务器
B/S:浏览器/服务器-------------你们所参与的
class Aoo{
void show(){}
}
class Boo extends Aoo{
void show(String name){} //重载
}
Boo o = new Boo();
o.show();
o.show("zhangsan");
OverrideOverloadDemo
编译期:.java经过编译,生成.class字节码文件----只检查语法
运行期:JVM加载.class并运行.class
堆、栈、方法区
我继承了一个中餐馆:
A:还是想做中餐-----------------不需要重写
B:想改做西餐-------------------需要重写
C:想在中餐基础之上加西餐-------需要重写(super中餐,再加西餐)
OverrideDemo
class World {
FlyingObject[] enemies;
FlyingObject[] enemies = null;-----------用了之后空指针
FlyingObject[] enemies = {};
FlyingObject[] enemies = new FlyingObject[0];
}
FlyingObject o1 = new Airplane();
FlyingObject o2 = new BigAirplane();
FlyingObject o3 = new Bee();
FlyingObject[] enemies = new FlyingObject[3];
enemies[0] = new Airplane();
enemies[1] = new BigAirplane();
enemies[2] = new Bee();
for(int i=0;i<enemies.length;i++){
System.out.println(enemies[i].x+","+enemies[i].y);
enemies[i].step();
//被子弹射击
//和英雄机撞
}
UploadDemo
Person p1 = new Student();
Person p2 = new Teacher();
Person p3 = new Doctor();
p1.Person类中的变量和方法
FlyingObject o1 = new Airplane();
FlyingObject o2 = new BigAirplane();
FlyingObject o3 = new Bee();
FlyingObject o4 = new Bullet(100,200);
FlyingObject o5 = new Hero();
FlyingObject o6 = new Sky();
o1.FlyingObject类中的
//动物是动物
Animal o1 = new Animal();
//老虎是老虎
Tiger o2 = new Tiger();
//老虎是动物
Animal o3 = new Tiger(); //正确
//动物是老虎----语义不通
Tiger o4 = new Animal(); //编译错误
class Animal{ //动物
}
class Tiger extends Animal{ //老虎
}
来源:oschina
链接:https://my.oschina.net/u/4303403/blog/4141116