oo.day05

Shoot射击游戏第一天:
1)设计Hero、Sky、Airplane、BigAirplane、Bee、Bullet对象类
2)设计World世界类,action()中: 创建对象并测试


Shoot射击游戏第二天:
1)设计Hero、Sky、Airplane、BigAirplane、Bee、Bullet的构造方法
2)在World类的action()中: 创建对象并测试


Shoot射击游戏第三天:
1)设计Airplane数组、BigAirplane数组、Bee数组、Bullet数组
2)创建FlyingObject超类,重构6个对象类(继承)
3)在超类FlyingObject中设计两个构造方法--------代码复用
4)在World类的action()中: 创建对象并测试


Shoot射击游戏第四天:
1)将Airplane数组、BigAirplane数组、Bee数组装到一个FlyingObject数组中
2)重写超类FlyingObject中的step()方法
3)画窗口
4)在World类的action()中: 创建对象并测试


Shoot射击游戏第五天:
1)将所有类的成员添加访问控制修饰符
2)设计对象的图片属性
3)在World类的action()中: 创建对象并测试






回顾:
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)默认的:什么也不写,本类、同包类
  类的访问控制修饰符,只能是public和默认的
  类中成员的访问控制修饰符,如上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)由static修饰
3.2)属于类的,在类被加载期间自动执行
   因类只被加载一次,所以静态块也只执行一次
3.3)何时用:加载/初始化静态资源(图片、音频、视频等)


5.static final常量:明天讲






























静态变量: 对象的图片属性
静态方法: 读取图片行为
静态块: 给对象的图片属性赋值






















对文件操作,是特别容易出现异常的
--------------所以很多时候,java要求必须做异常处理
































天空-----------1张图
子弹-----------1张图
英雄机---------6张图
小敌机---------5张图
大敌机---------5张图
小蜜蜂---------5张图






































sayHi(),study(),teach()......
小敌机-------step()行为






































double b = Math.sqrt(25);----------静态方法


无论m1,m2,m3,...,m100中的哪一个对象
  去sqrt(25),最终的结果都是一样的
  说明sqrt()的操作仅与参数相关而与对象无关


假设sqrt()不是静态的:
  Math m1 = new Math();
  double a = m1.sqrt(25);


  Math m2 = new Math();
  double a = m2.sqrt(25);


  Math m3 = new Math();
  double a = m3.sqrt(25);






























Arrays.sort(arr);-----------静态方法






无论a1,a2,a3,...,a100中的哪一个对象
去sort(arr)的最终结果都是一样的
说明sort()的操作仅与参数相关而与对象无关




假设sort()不是静态的:
  Arrays a1 = new Arrays();
  a1.sort(arr);


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


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
























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
































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








































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






























很多个小敌机--------






























王者荣耀----------------map.jpg
静下来------------------a.mp4
吸血鬼日记第6季第1集----b.avi






























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


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






































class Aoo{
  int a; //实例变量
  static int b; //静态变量
}
































方法------------public
变量------------private和protected
  1)派生类的变量-------private
  2)超类的变量---------protected
































java建议默认修饰吗?-----------------不建议
























数据(变量)私有化(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 c = scan.next();
































A公司:
  package cn.tedu.b.c;
  class Aoo{
  }


B公司:
  package com.taobao.b.c;
  class Aoo{
  }




建议:
  域名反写   . 项目名称 . 模块名称     . 类名
  cn.tedu    . aproject  . stumanager   . Student
  cn.tedu    . aproject  . teachmanager . Teacher
























  cn.tedu    . bproject




可移植性


























  com.taobao .




























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




































package a;
class Aoo{ //a.Aoo
}


package b;
class Aoo{ //b.Aoo
}
































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






601






























C语言:
printf("%d",a);


讲一个小功能-----一个月时间










































项目代码:
1.添加访问控制修饰符
2.准备图片
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值