面向对象的第一天:
潜艇游戏第一天:
- 创建6个类,创建World类并测试
回顾:
-
数组:
-
复制:
-
System.arraycopy(a,1,b,0,4);
-
int[] b = Arrays.copyOf(a,6);
a = Arrays.copyOf(a,a.length 1);
-
-
排序:
- Arrays.sort(arr);
-
-
方法:函数,过程
包装特定的业务逻辑功能,只做一件事,可以反复调用,
减少代码重复,有利于代码重用和代码维护
-
定义方法:
修饰词 返回值类型 方法名(参数列表) {
方法体
}
-
调用方法:
- 无返回值:方法名(有参考);
- 返回值:数据类型 变量 = 方法名(参传参);
-
return:
- return 值; //1)结束方法 2)返回结果给调用方
- return; //1)结束方法
笔记:
-
什么是类?什么是对象?
-
在现实生活中,它由许多对象组成,基于对象提取类别
-
对象:软件中真实存在的个人/东西
类:类别/类型,代表一类个体
-
类是对象的模子,对象是类的具体例子
-
类可包括:
- 对象的属性/特征-成员变量
- 对象的行为/动作-方法
-
一个类可以创建多个对象
-
-
如何创建类别?如何创建对象?如何访问成员?
public class Student { //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 = 24; ls.address = "黑龙江佳木斯"; ls.study(); ls.sayHi(); //1)创建了一个学生对象 //2)给所有成员变量赋默认值 Student ww = new Student(); ww.study(); ww.sayHi(); } }
-
方法的重载(overload/overloading):---------------更加方便用户的访问
- 发生在同一类中,方法名相同,参数列表不同
- 编译器在编译时会根据方法的签名自动绑定方法
//重载的演示 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"); } } 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){} //编译错误,重载与参数名称无关 }
精华笔记:
-
什么是类?什么是对象?
-
现实生活中是由很多很多对象组成的,基于对象抽出了类
-
对象:软件中真实存在的单个个体/东西
类:类别/类型,代表一类个体
-
类是对象的模子,对象是类的具体的实例
-
类中可以包含:
- 对象的属性/特征-----------------------成员变量
- 对象的行为/动作-----------------------方法
-
一个类可以创建多个对象
-
-
如何创建类?如何创建对象?如何访问成员?
-
方法的重载(overload/overloading):---------------更加方便用户的访问
- 发生在同一类中,方法名相同,参数列表不同
- 编译器在编译时会根据方法的签名自动绑定方法
潜艇游戏需求:
- 所参与的角色:
- 战舰、深水炸弹、侦察潜艇、鱼雷潜艇、水雷潜艇、水雷
- 角色间的关系:
- 战舰发射深水炸弹
- 深水炸弹可以打潜艇(侦察潜艇、鱼雷潜艇、水雷潜艇),若打中:
- 潜艇消失、深水炸弹消失
- 得东西:
- 打掉侦察潜艇,玩家得10分
- 打掉鱼雷潜艇,玩家得40分
- 打掉水雷潜艇,战舰得1条命
- 水雷潜艇可以发射水雷
- 水雷可以击打战舰,若击中:
- 水雷消失
- 战舰减1条命(命数为0时游戏结束)
补充:
-
高质量的代码:---------------------以后的目标、拿年薪
- 复用性好、扩展性好、维护性好、可移植性好\健壮性好、可读性好、效率好…
-
默认值规则:
byte,short,int,long,char-------------0 float,double-------------------------0.0 boolean------------------------------false 引用类型------------------------------null
-
//若想访问对象,需要通过引用zs 引用 数据类型 引用类型变量 指向 对象 Student zs = new Student();
-
方法的签名:方法名+参数列表
-
明日单词:
1)this:这个
2)Pointer:指针
3)random:随机
4)reference:引用