类与对象总结

 一、类与对象

从字面表达来看,类与对象这两个概念是模糊的,那到底什么是类,什么是对象呢?

直白的说,在生活中,类就是很多具有相同特征的事物的集合,而对象就是这些事物的一个个体。

来看下面这句话:

“咱们俩是一类人”

这句话就很好的诠释了类与对象的关系

“一类人”说明了这句话中“人”是一个类,而“咱们俩”这两个个体就是“人”这个大类中的两个对象。

这是生活中的类与对象,移植到java中也是大同小异。

文气一点的讲,在java中,类就是一个模板,由特征(属性)和方法(行为)构成。而对象是则是用属性和行为描述而成的具体的个体。类的属性对应对象的特征,类的方法对应对象的行为。

二、类的基本格式

在上一段中我们说过,类由属性和方法构成,那么在用代码定义类的时候,也要体现出类的属性和方法

 

定义类的代码

//定义类的格式

public class 类名{

    //定义属性的格式

     访问修饰符  数据类型  属性名;

     //定义方法的格式

       public 返回值数据类型  方法名(数据类型 参数名,...){

                  方法体;

      }

}

 三、实例化对象

    想要做到一件具体的事情,必然需要一个具体的对象,光靠一个类是不行的,这就是需要我们实例化一个或者多个对象。

    实例化对象的关键词是new

//实例化对象的代码

    类名 对象名=new 类名();

四、对象调用函数的方法

    对象调用函数的关键字是"."

   1、 对象名.函数名(实参);

   2、 对象名.属性名="属性值";

五、对象同同时也可以作为参数  

六、举例

package game;

import java.util.Random;

public class People {

	private String name;
	private int blood;
	private Skill [] array = {new Skill("普通攻击",5)};

	/**
	 * 定义构造方法
	 */
	public People(){
		this("未命名",100);
	}
	/**
	 * 定义带参数的构造方法
	 * @param name
	 * @param blood
	 */
	public People(String name,int blood){
		this.name = name;
		this.blood = blood;
	}
	/**
	 * 定义带参数的构造方法
	 * @param name
	 * @param blood
	 */
	public People(String name,int blood,Skill [] array){
		this.name = name;
		this.blood = blood;
		this.array = array;
	}
	
	/**
	 * 定义给姓名属性设置值的方法
	 * @param name
	 */
	public void setName(String name){
		this.name = name;
	}
	/**
	 * 定义获取姓名属性值的方法
	 * @return name属性中存储的值
	 */
	public String getName(){
		return name;
	}
	/**
	 * 定义给血量属性设置值的方法
	 * @param blood
	 */
	public void setBlood(int blood){
		this.blood = blood;
	}
	/**
	 * 定义获取血量属性值的方法
	 * @return blood属性中存储的值
	 */
	public int getBlood(){
		return blood;
	}
	/**
	 * 定义获取技能属性值的方法
	 * @return array属性中存储的值
	 */
	public Skill [] getArray(){
		return array;
	}
	/**
	 * 定义给技能属性设置值的方法
	 * @param array
	 */
	public void setArray(Skill [] array){
		this.array = array;
	}
	
	/**
	 * 攻击方法
	 * @param p要被攻击的对象
	 */
	public void beat(People p) {
		//实例化一个随机数类的对象
		Random rand = new Random();
		//获取一个随机数的值
		int value = rand.nextInt(array.length);
		//从技能数据中随机获取一个技能对象
		Skill skill = array[value];
		
		//获取到要被name攻击对象的血量
		int b = p.getBlood();
		//减少血量值
		b = b-skill.getAttack();
		//重新设置对象的血量
		p.setBlood(b);
		//输出攻击的信息
		System.out.println(name + "使用"+skill.getName()+",攻击了"+p.getName()+ ","+p.getName()+"剩余的血量是" + p.getBlood());
	}
	
}

 

 

/**
 * 技能类
 */
public class Skill {

	private String name;
	private int attack;

	/**
	 * 构造方法
	 * 
	 * @param name技能名称
	 * @param attack技能的攻击力
	 */
	public Skill(String name, int attack) {
		this.name = name;
		this.attack = attack;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setAttack(int attack) {
		this.attack = attack;
	}

	public int getAttack() {
		return attack;
	}
}

 

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//定义一个存储技能的数组对象
		Skill [] arraySol = {new Skill("重击",20),new Skill("普通攻击",5),new Skill("法术",50)};
		People soldier=new People("战士张三",200,arraySol);
		Skill [] arrayBoss = {new Skill("吸血",20),new Skill("普通攻击",5)};
		People boss=new People("李四Boss",200,arrayBoss);
		
		//判断战士和Boss的血量是否都大于0
		while(soldier.getBlood() > 0 && boss.getBlood() > 0){
			//调用战士攻击boss的方法
			soldier.beat(boss);
			//判断boss的血量是否小于或等于0,如果是则结束循环
			if(boss.getBlood() <= 0){
				System.out.println(soldier.getName()+"胜利!");
				break;
			}
			//调用boss攻击战士的方法
			boss.beat(soldier);
			//判断战士的血量是否小于等于0,如果是则结束循环
			if(soldier.getBlood() <= 0){
				//输出信息
				System.out.println(boss.getName()+"胜利!");
				//结束循环
				break;
			}
		}	
			
}

}

 运行结果:



 
     

 

 

     

   

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值