oo.day05

Shoot射击游戏第一天:
1.创建了6个对象类,并创建World类测试

Shoot射击游戏第二天:
1.给6个对象类添加构造方法,并测试

Shoot射击游戏第三天:
1.设计小敌机、大敌机、小蜜蜂、子弹数组,并测试
2.设计FlyingObject超类,6个对象类分别继承
3.给FlyingObject超类设计两个构造方法,对象类分别调用

Shoot射击游戏第四天:
1.将小敌机数组、大敌机数组、小蜜蜂数组合为FlyingObject数组,并测试
2.在6个对象类中重写超类的step()移动
3.画窗口

Shoot射击游戏第五天:
1.给类中的成员添加访问控制修饰符
2.给6个对象类添加图片属性


回顾:
1.向上造型:
  1)超类型的引用指向派生类的对象
  2)能点出来什么,看引用的类型
2.方法的重写(Override):
  1)发生在父子类中,方法名称相同,参数列表相同,方法体不同
  2)重写方法被调用时,看对象的类型
3.重写与重载的区别:
  1)重写:
      发生在父子类中,方法名称相同,参数列表相同,方法体不同
      "运行期",看对象类型来调用方法
  2)重载:
      发生在一个类中,方法名称相同,参数列表不同,方法体不同
      "编译期",看引用/参数类型来绑定方法


笔记:
1.package:
  1)作用:避免类的命名冲突
  2)包名可以有层次结构,同包中的类不能同名
  3)类的全称: 包名.类名
  4)建议:包名所有字母都小写
  import:
  1)同包中的类可以直接访问,
    不同包中的类不能直接访问,想访问只能如下方式:
    1.1)先import声明类再使用类----建议
    1.2)类的全称---------太繁琐,不建议
2.访问控制修饰符:
  1)public:公开的,任何类
  2)private:私有的,本类
  3)protected:受保护的,本类、派生类、同包类
  4)默认的:什么也不写,本类、同包类
  说明:
    1)类的访问修饰只能是public或默认的
    2)类中成员的访问修饰如上4种都可以
3.final:最终的、不可改变的-----单独应用率低
  1)修饰变量:变量不能被改变
  2)修饰方法:方法不能被重写
  3)修饰类:类不能被继承
4.static:静态的
  1)静态变量:
    1.1)由static修饰
    1.2)属于类,存储在方法区中,只有一份
    1.3)常常通过类名点来访问
    1.4)何时用:所有对象所共享的数据(图片、音频、视频等)
  2)静态方法:
    2.1)由static修饰
    2.2)属于类,存储在方法区中,只有一份
    2.3)常常通过类名点来访问
    2.4)静态方法没有隐式的this传递,
        静态方法中不能直接访问实例成员
    2.5)何时用:方法的操作仅与参数相关而与对象无关
  3)静态块:
    3.1)属于类,在类被加载期间自动执行,
        因类只被加载一次,所以静态块只执行一次
    3.2)何时用:加载/初始化静态资源(图片、音频、视频)


练习:
1.保证程序的正常运行
2.以Airplane为例,体会images为静态的和实例的的区别
3.预习static final常量
4.将今天的项目代码在昨天基础之上重写两次


周二----------画对象(不动)

周三----------对象动起来
周四----------对象动起来
周五----------子弹与敌人打
下周一--------英雄机与敌人撞


读图片-------文件的读写(IO)

文件的IO操作,特别容易出现异常
-----所以java强制,做文件处理时,必须加异常处理


background.png


图片-------int,int[]
    -------BufferedImage


每个对象都有图片,都有的话,按理说应该放在超类中
------此处放在超类中不合适
------因为每个对象的图片都是不一样的---在派生类中


画窗口

给对象准备图片

画对象-------------


Arrays.sort(arr);

假设sort()不是静态的:
  无论a1,a2,a3,...,a100中的哪一个对象
  ----去sort()时,最终的结果都是一样的
  ----说明sort()操作仅与参数相关而与对象无关
  
  Arrays a1 = new Arrays();
  a1.sort(arr);

  Arrays a2 = new Arrays();
  a2.sort(arr);

  Arrays a3 = new Arrays();
  a3.sort(arr);


double d = Math.sqrt(25);
假设sqrt()不是静态的:
  无论m1,m2,m3,...,m100中的哪一个对象
  ----去sqrt(25),最终的结果都是一样的
  ----说明sqrt()的操作仅与参数有关而与对象无关


  Math m1 = new Math();
  double d = m1.sqrt(25); //5.0

  Math m2 = new Math();
  double d = m2.sqrt(25); //5.0

  Math m3 = new Math();
  double d = m3.sqrt(25); //5.0

Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
double b = scan.nextDouble();----------实例方法

double c = Math.random();
double d = Math.sqrt(25);
int[] b = Arrays.copyOf(arr,6);
Arrays.sort(arr);----------------------静态方法


实例变量多还是静态变量多----------实例变量多
实例方法多还是静态方法多----------实例方法多

所有小敌机-------------------airplane.png(一份)
百度音乐听大王叫我来巡山-----xun.mp3(一份)
爱奇艺吸血鬼日记第8季第1集---xi.avi(一份)

100个敌机------小敌机


堆:new出来的对象(包括实例变量)
栈:局部变量(包括方法的参数)
方法区:.class字节码文件(包括方法、静态变量)


成员变量:
1)实例变量:没有static修饰的,属于对象,堆中,
           有几个对象就有几份
       通过对象名点来访问
2)静态变量:由static修饰的,属于类,方法区中,
           只有一份,
       通过类名点来访问


class Aoo{
  int a;
  static int b;
}

不建议默认修饰

变量private,超类的变量protected
方法public

数据(变量)私有化(private)
行为(方法)公开化(public)

class Card{
  private String cardId;
  private String cardPwd;
  private double balance;

  public boolean payMoney(double money){
    if(balance>=money){
      balance-=money;
      return true;
    }else{
      return false;
    }
  }

  public boolean checkPwd(String pwd){
    if(cardPwd.equals(pwd)){
      return true;
    }else{
      return false;
    }
  }

}


package java.util;
class Scanner{
  Scanner(Stream s){
  }
  int nextInt(){
  }
  double nextDouble(){
  }
  String next(){
  }

}

import java.util.Scanner;
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
double b = scan.nextDouble();
String s = scan.next();


民生银行

A公司:
  package com.a.b.c.d;
  class Aoo{
  }
B公司:
  package com.m.b.c.d;
  class Aoo{
  }
  


建议:--------------了解
   域名反写  .  项目名称  .  模块名称      .  类名
   cn.tedu   .  aproject  .  stumanager    .  
   cn.tedu   .  aproject  .  teachmanager  .


   cn.tedu   .  bproject  .

   com.taobao
   com.baidu

package a.b.c.d.e;
class Aoo{ //a.Aoo
}

package b.m.q.n.y;
class Aoo{ //b.Aoo
}


项目---------小区
包-----------楼+单元
类-----------房子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值