LOL有很多英雄,比如盲僧,团战可以输,提莫必须死,盖伦,琴女
所有这些英雄,都有一些共同的状态
比如,他们都有名字,hp,护甲,移动速度等等
这样我们就可以设计一种东西,叫做类,代表英雄这样一种事物
类: 英雄(Hero)
状态: 名字, 血量,护甲,移动速度
英雄
血量
护甲
移动速度
public
class
Hero {
String name;
//姓名
float
hp;
//血量
float
armor;
//护甲
int
moveSpeed;
//移动速度
}
一个个具体的英雄,就叫一个个的对象
new Hero() 就是java中创建一个英雄对象的意思
public
class
Hero {
String name;
//姓名
float
hp;
//血量
float
armor;
//护甲
int
moveSpeed;
//移动速度
public
static
void
main(String[] args) {
Hero garen =
new
Hero();
garen.name =
"盖伦"
;
garen.hp =
616
.28f;
garen.armor =
27
.536f;
garen.moveSpeed =
350
;
Hero teemo =
new
Hero();
teemo.name =
"提莫"
;
teemo.hp = 383f;
teemo.armor = 14f;
teemo.moveSpeed =
330
;
}
}
类名:Item
物品有如下属性:
名字 name 类型是字符串String
价格 price 类型是整型 int
创建(实例化)3件具体物品
名称 价格
血瓶 50
草鞋 300
长剑 350
public class Item {
String name;// 名字
int price;// 价格
public static void main(String[] args) {
Item healthStone = new Item();
healthStone.name="小血瓶";
healthStone.price=50;
Item yataghan = new Item();
yataghan .name="长剑";
yataghan .price=300;
Item strawSandals = new Item();
strawSandals.name="草鞋";
strawSandals.price=350;
}
}
一个英雄有姓名,血量,护甲等等状态
这些状态就叫做一个类的属性
属性的类型可以是基本类型,比如int整数,float 浮点数
也可以是类类型,比如String 字符串
属性名称一般来说,都是小写
比如name
如果有多个单词组成,后面的单词的第一个字母大写
比如 moveSpeed
属性也是变量,所以需要满足 变量的命名规则
一个英雄可以有名称,血量,护甲,移动速度,还有 其他你想到的,作为新的属性,加入到英雄上面
比如
送了多少次
杀人次数
助攻次数
金钱
补刀数
攻击速度
杀人后说的话
被杀后说的话
。。。
String name;
float
blood;
float
moveSpeed;
float
armor;
//护甲
int
kill;
//击杀
int
dead;
int
support;
int
mendacity;
float
attackSpeed;
String killOthers;
String killedByOthers;
在LOL中,一个英雄可以做很多事情,比如超神,超鬼,坑队友
能做什么在类里面就叫做方法
比如队友残血正在逃跑,你过去把路给别人挡住了,导致他被杀掉。 这就是坑队友
每个英雄。。。。都可以坑
所以为Hero这个类,设计一个方法: keng
public
class
Hero {
String name;
//姓名
float
hp;
//血量
float
armor;
//护甲
int
moveSpeed;
//移动速度
//坑队友
void
keng(){
System.out.println(
"坑队友!"
);
}
比如方法:
有的方法不需要返回值,这个时候就把返回类型设置为void,表示该方法不返回任何值
比如方法 "坑队友"
public class Hero {
String name; //姓名
float hp; //血量
float armor; //护甲
int moveSpeed; //移动速度
//获取护甲值
float getArmor(){
return armor;
}
//坑队友
void keng(){
System.out.println("坑队友!");
}
}
英雄在一些特定情况下,可以增加移动速度
这样我们就通过addSpeed这个方法增加移动速度
给盖伦增加100的移动速度:
public class Hero {
String name; //姓名
float hp; //血量
float armor; //护甲
int moveSpeed; //移动速度
//坑队友
void keng(){
System.out.println("坑队友!");
}
//获取护甲值
float getArmor(){
return armor;
}
//增加移动速度
void addSpeed(int speed){
//在原来的基础上增加移动速度
moveSpeed = moveSpeed + speed;
}
public static void main(String[] args) {
Hero garen = new Hero();
garen.name = "盖伦";
garen.moveSpeed = 350;
garen.addSpeed(100);
}
}方法是一个类的动作行为,所以一般都是以动词开头的,比如 keng ...
如果有多个单词,后面的每个单词的第一个字母使用大写
比如 addSpeed
为英雄类Hero设计几个新的方法:
1. 超神 legendary(),无参数,无返回类型
2. 获取当前的血量 getHp(), 无参数,有float类型的返回值
3. 回血 recovery(float blood), 有参数 float类型参数 blood表示本次恢复的血量,无返回类型
import com.sun.xml.internal.bind.v2.runtime.output.StAXExStreamWriterOutput;
/*
类和对象
类是对象的模板;对象是类的实例
*/
public class Hero {
String name;//姓名
String title;//英雄的称号或者头衔 如盖伦的称号是德玛西亚之力
float hp;//血量
float armor;//护甲
int moveSpeed;//移动速度
int killed;//死亡数
int kill;//击杀数
int support;//助攻
int money;//金币
int lastHit;//补刀数
int attackSpeed;//攻速
String wordAfterKill;//杀人后说的话
String getWordAfterKill;//被杀后说的话
void dance(){
System.out.println(name + "在跳舞.......");
}
//获取护甲
float getArmor(){
return armor;
}
//增加移速
void addSpeed(int speed){
moveSpeed = moveSpeed + speed;
}
//超神
void legendary(){
System.out.println(title+"已经超神!!!");
}
//获取血量
float getHp(){
System.out.println(title+"("+name+"):生命值"+hp);
return hp;
}
//回血
void recovery(float blood){
hp = hp + blood;
System.out.println(name + "回血:"+ blood);
}
//信号:发出问号
void noctieMissing(){
System.out.println(title+"("+name+"):示意敌人已经不见踪影。");
}
//信号:正在路上
void noctieIsComming(){
System.out.println(title+"("+name+"):正在路上。");
}
public static void main(String[] args) {
//new一个类的实例,即new一个对象
Hero garen = new Hero();
garen.name = "盖伦";
garen.title = "德玛西亚之力";
garen.hp = 616;
garen.armor = 27;
garen.moveSpeed = 350;
garen.addSpeed(100);
garen.legendary();
garen.getHp();
garen.recovery(4396);
garen.noctieIsComming();
garen.noctieMissing();
Hero temo = new Hero();
temo.name = "提莫";
temo.hp = 383;
temo.armor = 14;
temo.moveSpeed = 330;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术