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

猜你喜欢

转载自blog.csdn.net/qq_49639550/article/details/108036650
今日推荐