Java中类与对象的分析
-
类与对象的概念
类:具有相同属性、特征、行为方式、功能的一类事物的集合
程序中:具有相同属性、特征、行为方式、功能的一类对象的模板对象:具体的事物
程序中: 类创建一个对象,存在于内存中 -
以PK游戏为例介绍(以王者荣耀为背景)
在王者荣耀中有101位英雄,每一位英雄可看做为一类(他们有相同的技能机制等),而玩家所使用这个英雄为一个对象,那么用类与对象进行分析时,需要了解这些知识
1.编写类
2.类创建对象
3.描述方法
4.写主函数
//创建一个孙悟空类
public class SunWuKong {
String name;//孙悟空类的姓名
int hp;//孙悟空类的血量
int ad;//孙悟空类的物理攻击力
int ap;//孙悟空类的魔法攻击力
int hj;//孙悟空类的护甲值
在这段代码中我们创建了一个孙悟空类,同时我们可以看到类的编写格式
格式: public class 类名{ } 类名首字母大写
SunWuKong swk=new SunWuKong();//类创建对象
swk.name="孙悟空(cy)";//创建一个孙悟空类的对象名字为孙悟空(cy)
swk.hp=4500;//创建一个孙悟空类的对象的血量为4500
swk.ad=300;//创建一个孙悟空类的对象的物理攻击力为300
swk.ap=0;//创建一个孙悟空类的对象的魔法攻击力为0
swk.hj=20;//创建一个孙悟空类的对象的护甲值为20
这段代码我们创建了一个对象,格式为
格式: 类名 对象变量名 = new 类名();
//孙悟空类的攻击方法
public void ack_1(ChangE ce) {
int is1 =(int)(100+2.0*ad);
int is=is1-ce.hj;
ce.hp-=is;
//在PK程序中,因为攻击到另一个对象身上,所以需要调用另一个对象的部分数值
这段代码我们则看到了怎么样描述方法,那么方法是什么呢
方法:行为功能的描述 需要逻辑 运算等一块代码才能完成的
格式: public 返回值类型 方法名(参数类型 参数变量名){}
public class pkmanage {
public static void main(String[] args) {
SunWuKong swk=new SunWuKong();//类创建对象
swk.name="孙悟空(cy)";//创建一个孙悟空类的对象名字为孙悟空(cy)
swk.hp=4500;//创建一个孙悟空类的对象的血量为4500
swk.ad=300;//创建一个孙悟空类的对象的物理攻击力为300
swk.ap=0;//创建一个孙悟空类的对象的魔法攻击力为0
swk.hj=20;//创建一个孙悟空类的对象的护甲值为20
ChangE ce=new ChangE();
ce.name="嫦娥(zyf)";
ce.hp=5000;
ce.ad=20;
ce.ap=450;
ce.hj=40;
//需判断谁胜谁负
while(swk.hp>0&&ce.hp>0) {
swk.ack_1(ce);//调用孙悟空的攻击方法
if(ce.hp>0)
ce.ack_1(swk);//调用嫦娥的攻击方法
}
if(swk.hp>0) {
System.out.println(swk.name+"win!!!");
}
else {
System.out.println(ce.name+"win!!!");
}
}
}
这段代码则是我们的主函数了,我们一般在主函数里面创建对象,在调用方法
主函数格式:public static void main(String[] 参数名){}
其他的一些细节在代码旁边有注释,这里就不在一一赘述
在PK游戏中,我们需要编写两个类,也要创建两个对象,在根据需要添加属性和方法,最后在写主函数,那么怎么理解属性和方法呢?
属性:可以由 一个数据,一个变量表达
方法:行为功能的描述 需要逻辑 运算等一块代码才能完成的
在这里,属性可以有,血量、蓝条、攻击力、防御力等等,而方法就是攻击另一个对象。
到这,我们就可以来编写一个简单的PK程序了。
public class SunWuKong {
String name;
int hp;
int ad;
int ap;
int hj;
public void ack_1(ChangE ce) {
int is1 =(int)(100+2.0*ad);
int is=is1-ce.hj;
ce.hp-=is;
System.out.println(name+"使用护生咒法攻击嫦娥,造成了"+is+"点伤害嫦娥剩余hp为"+ce.hp);
}
}
public class ChangE {
String name;
int hp;
int ad;
int ap;
int hj;
int is;
public void ack_1(SunWuKong swk) {
int is1 =(int)(150+0.9*ap);
is=is1-swk.hj;
swk.hp-=is;
System.out.println(name+"使用月落攻击"+swk.name+"造成"+is+"点伤害"+swk.name+"剩余hp为"+swk.hp);
}}
public class pkmanage {
public static void main(String[] args) {
SunWuKong swk=new SunWuKong();
swk.name="孙悟空(cy)";
swk.hp=4500;
swk.ad=300;
swk.ap=0;
swk.hj=20;
ChangE ce=new ChangE();
ce.name="嫦娥(zyf)";
ce.hp=5000;
ce.ad=20;
ce.ap=450;
ce.hj=40;
while(swk.hp>0&&ce.hp>0) {
swk.ack_1(ce);
if(ce.hp>0)
ce.ack_1(swk);
}
if(swk.hp>0) {
System.out.println(swk.name+"win!!!");
}
else {
System.out.println(ce.name+"win!!!");
}
}
}
那么这就是一个完整的代码了,事实上我们创建了三个类,最后一个类里面写的是主函数,运行代码可以得到如下结果:
孙悟空(cy)使用护生咒法攻击嫦娥,造成了660点伤害嫦娥剩余hp为4340
嫦娥(zyf)使用月落攻击孙悟空(cy)造成535点伤害孙悟空(cy)剩余hp为3965
孙悟空(cy)使用护生咒法攻击嫦娥,造成了660点伤害嫦娥剩余hp为3680
嫦娥(zyf)使用月落攻击孙悟空(cy)造成535点伤害孙悟空(cy)剩余hp为3430
孙悟空(cy)使用护生咒法攻击嫦娥,造成了660点伤害嫦娥剩余hp为3020
嫦娥(zyf)使用月落攻击孙悟空(cy)造成535点伤害孙悟空(cy)剩余hp为2895
孙悟空(cy)使用护生咒法攻击嫦娥,造成了660点伤害嫦娥剩余hp为2360
嫦娥(zyf)使用月落攻击孙悟空(cy)造成535点伤害孙悟空(cy)剩余hp为2360
孙悟空(cy)使用护生咒法攻击嫦娥,造成了660点伤害嫦娥剩余hp为1700
嫦娥(zyf)使用月落攻击孙悟空(cy)造成535点伤害孙悟空(cy)剩余hp为1825
孙悟空(cy)使用护生咒法攻击嫦娥,造成了660点伤害嫦娥剩余hp为1040
嫦娥(zyf)使用月落攻击孙悟空(cy)造成535点伤害孙悟空(cy)剩余hp为1290
孙悟空(cy)使用护生咒法攻击嫦娥,造成了660点伤害嫦娥剩余hp为380
嫦娥(zyf)使用月落攻击孙悟空(cy)造成535点伤害孙悟空(cy)剩余hp为755
孙悟空(cy)使用护生咒法攻击嫦娥,造成了660点伤害嫦娥剩余hp为-280
孙悟空(cy)win!!!
很有趣的一个东西,可以变着花样多多尝试一下会更容易理解哦!