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.准备图片