2020-08-16

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!!!
很有趣的一个东西,可以变着花样多多尝试一下会更容易理解哦!

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北极,南极

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值