本章会引入属性和方法的基本概念。
一个植物类(Plant)有很多的状态信息,如名字、话费、血量、攻击力和攻击速度等。
这些植物的状态就叫做一个类的属性。
Part 1:属性的类型
属性的类型可以是基本类型,比如int整数,float 浮点数也可以是类类型,比如String 字符串
public class Plant {
String name; // 名字
int cost; // 费用
int hp; // 血量
int attack; //攻击力
float attackSpeed; // 攻击速度
}
属性名称的命名规则:
一般来说,属性名称都是小写,比如name。如果有多个单词组成,后面的单词的第一个字母大写。比如说attackSpeed属性,该属性也是变量,所以需要满足变量的命名规则,如上述示例代码的展示。
Part 2:方法的概念
在一局的PVZ游戏中,每个植物都有自己的操作和状态,当一个植物的血量降低到0的时候,就是被“吃掉”。这个时候该植物就消失了,每个植物都会消失。
所以我们可以为Plant类,设计一个方法:plantDisappear
public class Plant {
String name; // 名字
int cost; // 费用
int hp; // 血量
int attack; //攻击力
float attackSpeed; // 攻击速度
//血量为0
void plantDisapper(){
System.out.println("被吃掉了");
}
}
Part 3:方法的返回类型
有些方法是有返回值类型的,比如方法:
int getHp(){
return hp;
}
这个方法是用来获得一个英雄有多少血量的,这个方法的返回值类型的int
有的方法不需要返回值,这个时候就需要把这个方法的返回值设置为void。
比如说方法“吃掉”
void plantDisapper(){
System.out.println("被吃掉了");
}
public class Plant {
String name; // 名字
int cost; // 费用
int hp; // 血量
int attack; //攻击力
float attackSpeed; // 攻击速度
//获得当前血量
int getHp(){
return hp;
}
//血量为0
void plantDisapper(){
System.out.println("被吃掉了");
}
}
Part 4:方法的参数
植物在被使用能量豆之后,会进行特效攻击。在特效工具的情况下,会增加植物的攻击速度,这样我们就通过addAttackSpeed这个方法来增加攻击速度。
void addAttackSpeed(float speed){
//在原来的基础上增加攻击速度
attackSpeed = attackSpeed + speed;
}
在当中float speed叫做方法的参数
给单发豌豆增加一倍的攻击速度
Plant oneShotPeas = new Hero();
oneShotpeas.name = "单发豌豆";
oneShotpeas.attackSpeed = 1.0f;
oneShotpeas.addAttackSpeed(1.0);
public class Plant {
String name; // 名字
int cost; // 费用
int hp; // 血量
int attack; //攻击力
float attackSpeed; // 攻击速度
//获得当前血量
int getHp(){
return hp;
}
//在原来的基础上增加攻击速度
void addAttackSpeed(float speed){
attackSpeed = attackSpeed + speed;
}
//血量为0
void plantDisapper(){
System.out.println("被吃掉了");
}
}
public class Hello
{
public static void main(String[] args){
Plant oneShotPeas = new Hero();
oneShotpeas.name = "单发豌豆";
oneShotpeas.attackSpeed = 1.0f;
oneShotpeas.addAttackSpeed(1.0);
}
}
Part 5:方法的命名
方法是一个类的动作行为,一般是以动词开头的,比如说getHp
如果说有多个单词,后面的每一个单词,后面的每个单词的第一个单词字母使用大写比如说
addAttackSpeed
public class Plant {
String name; // 名字
int cost; // 费用
int hp; // 血量
int attack; //攻击力
float attackSpeed; // 攻击速度
//获得当前血量
int getHp(){
return hp;
}
//在原来的基础上增加攻击速度
void addAttackSpeed(float speed){
attackSpeed = attackSpeed + speed;
}
//血量为0
void plantDisapper(){
System.out.println("被吃掉了");
}
}