1.对象or类
1.1什么是类?什么是对象?
- 现实生活是由很多很多对象组成的,基于对象抽出了类
- 对象:软件中真实存在的单个个体/东西
- 类:类型/类别,代表一类个体
- 类是对象的模板,对象是类的具体的实例
- 类中可以包含:
- 对象的属性/特征-----------------------------成员变量
- 对象的行为/动作/功能---------------------方法
- 一个类可以创建多个对象
1.2如何创建类?如何创建对象?如何访问成员?
//创建类:
public class Student {
//成员变量
String name;
int age;
String address;
//方法
void study(){
System.out.println(name+"在学习...");
}
void sayHi(){
System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address);
}
}
//创建对象:
public class StudentTest {
public static void main(String[] args) {
//创建一个学生对象
Student zs = new Student();
//访问成员变量
zs.name = "zhangsan";
zs.age = 25;
zs.address = "河北廊坊";
//调用方法
zs.study();
zs.sayHi();
Student ls = new Student();
ls.name = "lisi";
ls.age = 27;
ls.address = "黑龙江佳木斯";
ls.study();
ls.sayHi();
//1)创建了一个学生对象
//2)给所有成员变量赋默认值
Student ww = new Student();
ww.study();
ww.sayHi();
}
}
1.3方法的签名:
方法名+参数列表
1.4方法的重载
方法的重载(overload/overloading):-------------------更方便方法的调用
- 发生在同一类中,方法名相同,参数列表不同
- 编译器在编译时会根据方法的签名自动绑定方法
//演示方法的重载
class Aoo{
void show(){}
void show(String name){}
void show(int age){}
void show(String name,int age){}
void show(int age,String name){}
//int show(){ return 1; } //编译错误,重载与返回值类型无关
//void show(String address){} //编译错误,重载与参数名称无关
}
//演示重载方法的调用
public class OverloadDemo {
public static void main(String[] args) {
Aoo o = new Aoo();
o.show();
o.show("zhangsan");
o.show(25);
o.show("zhangsan",25);
o.show(25,"zhangsan");
}
}
2.潜艇游戏需求:
- 所参与的角色:战舰、深水炸弹、侦察潜艇、鱼雷潜艇、水雷潜艇、水雷
- 角色的关系
- 战舰发射深水炸弹
- 深水炸弹可以打潜艇(侦察潜艇、鱼雷潜艇、水雷潜艇),若打中:
- 潜艇消失、深水炸弹消失
- 打掉侦察潜艇,玩家得10分
- 打掉鱼雷潜艇,玩家得40分
- 打掉水雷潜艇,战舰得1条命
- 水雷潜艇发射水雷
- 水雷可以打战舰,若打中:
- 水雷消失
- 战舰减1条命(命数为0时游戏结束)
2.1创建了6个类,创建World类并测试
2.1.1整体结构
2.1.2Battleship类
package src.cn.tedu;
//战舰
public class Battleship {
int width; //宽
int height; //高
int x; //X 坐标
int y; //Y 坐标
int speed; //移动速度
int life; //命
/** 移动*/
void move(){
System.out.println("战舰移动啦!");
}
}
2.1.3Bomb类
package src.cn.tedu;
//炸弹
public class Bomb {
int width;
int height;
int x;
int y;
int speed;
void move(){
System.out.println("炸弹移动");
}
}
2.1.4Mine类
package src.cn.tedu;
//水雷
public class Mine {
int width;
int height;
int x;
int y;
int speed;
void move(){
System.out.println("水雷移动");
}
}
2.1.5MineSubMarine类
package src.cn.tedu;
//水雷潜艇
public class MineSubmarine {
int width;
int height;
int x;
int y;
int speed;
void move(){
System.out.println("水雷潜艇移动啦!");
}
}
2.1.6ObserverSubMarine类
package src.cn.tedu;
//侦查潜艇
public class ObserveSubmarine {
int width;
int height;
int x;
int y;
int speed;
void move(){
System.out.println("侦查潜艇移动啦!");
}
}
2.1.7TorpedoSubmarine类
package src.cn.tedu;
//鱼雷潜艇
public class TorpedoSubmarine {
int width;
int height;
int x;
int y;
int speed;
void move(){
System.out.println("鱼雷潜艇移动啦!");
}
}
2.1.8World(测试类)
package src.cn.tedu;
/** 整个游戏世界 */
public class World {
public static void main(String[] args) {
Battleship s= new Battleship();
s.width=50;
s.height=20;
s.x=100;
s.y=200;
s.speed=20;
s.life=5;
System.out.println(s.width+","+s.height+","+s.x+","+s.y+","+s.speed+","+s.life);
s.move();
ObserveSubmarine os1=new ObserveSubmarine();
os1.width=60;
os1.height=20;
os1.x=70;
os1.y=60;
os1.speed=60;
System.out.println(os1.width+","+os1.height+","+os1.x+","+os1.y+","+os1.speed);
os1.move();
ObserveSubmarine os2=new ObserveSubmarine();
os2.width=1;
os2.height=2;
os2.x=10;
os2.y=20;
os2.speed=50;
System.out.println(os2.width+","+os2.height+","+os2.x+","+os2.y+","+os2.speed);
os2.move();
TorpedoSubmarine ts1=new TorpedoSubmarine();
ts1.width=30;
ts1.height=20;
ts1.x=30;
ts1.y=40;
ts1.speed=6;
System.out.println(ts1.width+","+ts1.height+","+ts1.x+","+ts1.y+","+ts1.speed);
ts1.move();
TorpedoSubmarine ts2=new TorpedoSubmarine();
ts2.width=30;
ts2.height=30;
ts2.x=10;
ts2.y=30;
ts2.speed=50;
System.out.println(ts2.width+","+ts2.height+","+ts2.x+","+ts2.y+","+ts2.speed);
ts2.move();
MineSubmarine ms1=new MineSubmarine();
ms1.width=20;
ms1.height=20;
ms1.x=30;
ms1.y=10;
ms1.speed=20;
System.out.println(ms1.width+","+ms1.height+","+ms1.x+","+ms1.y+","+ms1.speed);
ms1.move();
MineSubmarine ms2=new MineSubmarine();
ms2.width=20;
ms2.height=20;
ms2.x=10;
ms2.y=10;
ms2.speed=30;
System.out.println(ms2.width+","+ms2.height+","+ms2.x+","+ms2.y+","+ms2.speed);
ms2.move();
Mine m1 =new Mine();
m1.width=20;
m1.height=20;
m1.x=10;
m1.y=10;
m1.speed=30;
System.out.println(m1.width+","+m1.height+","+m1.x+","+m1.y+","+os1.speed);
m1.move();
Mine m2 =new Mine();
m2.width=20;
m2.height=20;
m2.x=10;
m2.y=10;
m2.speed=30;
System.out.println( m1.width+","+ m1.height+","+ m1.x+","+ m1.y+","+ m1.speed);
m2.move();
Bomb z1=new Bomb();
z1.width=20;
z1.height=20;
z1.x=10;
z1.y=10;
z1.speed=30;
System.out.println( z1.width+","+ z1.height+","+ z1.x+","+ z1.y+","+ z1.speed);
z1.move();
Bomb z2=new Bomb();
z2.width=20;
z2.height=20;
z2.x=10;
z2.y=10;
z2.speed=30;
System.out.println( z2.width+","+ z2.height+","+ z2.x+","+ z2.y+","+ z2.speed);
z2.move();
}
}
3.补充
3.1OO,OOA,OOD,OOP
- OO:面向对象
- OOA:面向对象分析
- OOD:面向对象设计
- OOP:面向对象编程------------------你们所参与的
3.2高质量代码
复用性好、扩展性好、维护性好、可移植性好、健壮性好、可读性好、效率好......
3.3 类是一种引用数据类型
// 引用
// 数据类型 引用类型变量 指向 对象
Student zs = new Student();
3.4默认值:
byte,short,int,long,char-----------------0
float,double-----------------------------0.0
boolean----------------------------------false
引用类型----------------------------------null
3.5明日单词
1)this:这个
2)Pointer:指针
3)random:随机