java--day04

☆樱花仙子☆ 提交于 2021-01-10 01:49:54

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{ //老虎
}
























标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!