java类与对象

 

面向对象编程:就是在模拟现实生活。

 对象:只要是一个具体的物体或者一个具体的事物就是一个对象。
 举例:
  荷花
 会从那些方面去描述一个对象呢?
 特征:名字,年龄,身高,体重,性别,...
 行为(功能,用途):走路,吃饭,睡觉,学习,玩,...

物体根据  根据对象相似的特征和相似的行为进行归类。
 程序中的类:就是将生活中的对象进行一种抽象的定义。
  类包含两个部分:1.属性   2.方法(方法分为两类:1.构造方法   2.普通方法)
  类的属性对应的是对象的特征;类的方法对应的是对象的行为。 

3.类的格式
 public class 类名 {
  //属性定义格式
  private 数据类型 属性名;
  
  //构造方法定义格式
  public 类名构造方法名(数据类型 参数名,...){
   //代码
  }
  
  //普通方法定义格式
  public 返回值数据类型 方法名(数据类型 参数名,...){
   //代码
  }
 }

4.实例化对象和调用方法的格式
 实例化对象的关键字:new
 格式:
 类名  对象名  = new 构造方法名(参数值);

 调用方法的格式:
  对象名.方法名(参数值);

5.构造方法
 构造方法用途
  1.初始化属性值
  2.实例化对象
 
 构造方法和普通方法的区别
  1.返回值不同
  2.调用时间不同
  3.方法名不同
  4.用途不同

6.方法重载
 方法重装的原因        不同的对象会有同一种方法,要将他们进行区分
  
 方法重载的条件:
  1.在一个类中或者在有继承关系的父类和子类中;
  2.方法名必须要完全一致;
  3.方法所带的参数个数,参数类型,参数顺序必须要有一个不同。
  
 调用重载的方法:
  根据方法所带的参数个数,参数类型,参数顺序来区分方法的调用。

7.this关键字
 作用:
 1.当参数名和属性名相同时,可以使用this关键字来做区分,加了this的表示属性,没有加的则表示参数。
 2.调用构造方法,属性或者方法。
参数和属性名不同时可以不用this
         this.属性=参数
 this.name
 this.study();
 public 构造方法(String name){
  this(name,1);
 }
 
 Student stu = new 构造方法("a");
 Student stu2 = new 构造方法("a");
 
 
  this表示当前调用方法的对象

 

附带“德玛西亚与艾希对打”的代码

 

import java.util.Random;


public class fighting
{
	    

	
	private String name;//角色名字
	
	private int power;//攻击力量
	private int upPower;//初始攻击
	
	private int blood;//血量
	
	private int maxBlood;//血量上限
	
	private int upSpeed;//初始速度
	private int speed;//速度
	private int exp=0;//经验
	private int degree=1;//级别
             //获取属性
	//初始攻击值
	public int getUpPower()
	{
	this.upPower+=this.degree*2;
	return this.upPower;
	}
	//初始最大血量
	public int getmaxBlood()
	{
	this.maxBlood+=this.degree*10;
	return this.maxBlood;
	}
	//初始攻速
	public int getUpSpeed()
	{
	this.upSpeed+=this.degree;
	return this.upSpeed;
	}
	//等级初始
	public int getDegree()
	{
	this.degree=(this.exp+100)/100;
	return this.degree;
	}
	
	
	
	//设置和获取名字属性
	public void setName(String name)
	{
		this.name=name;
	}
	public String name()
	{
		return this.name;
	}
	//构造函数
	public fighting(String name ,int power,int maxBlood,int speed)
	{
	this.name = name;
	this.upPower=power;
	this.maxBlood=maxBlood;
	this.upSpeed=speed;
	} //攻击某人
	public void attack(fighting r)
	{
	//初始化攻击双方属性
	this.blood=this.getmaxBlood();
	this.speed=this.getUpSpeed();
	this.power = this.getUpPower();
	r.blood=r.getmaxBlood();
	r.speed=r.getUpSpeed();
	r.power = r.getUpPower();

	r.name=r.name();

	int i=0;
	Random rand = new Random();//产生随机数
	
	while(this.blood>0&&r.blood>0)
	{
	i++;
	if(i>10) break;//战斗10次结束
	if(this.speed>r.speed)//一方速度比另一方速快
	{
	r.blood=r.blood-this.power;//速度快的一方开始攻击
	System.out.println(this.name+"用q打了对方一下,对方减少了"+this.power);
	System.out.println(r.name+"你还剩余"+r.blood+"滴血");
	if(r.blood>0)//一击未死,对方开始进攻
	{
	this.blood=this.blood-r.power;
	System.out.println(r.name+"用技能q打了对手一下,血量减少"+r.power);
	System.out.println(this.name+"你还剩余"+this.blood+"滴血");
	}
	}
	else if(this.speed==r.speed&&rand.nextInt(10)>5)//产生一个10以内的随机数并且大于五,才能让对手进攻
	{
	r.blood=r.blood-this.power;
	System.out.println(this.name+"用技能w打了你一下,血量减少"+this.power);
	System.out.println(r.name+"你还剩余"+r.blood+"滴血");
	if(r.blood>0)
	{
	this.blood=this.blood-r.power;//剩余血量大于0,对手进攻
	System.out.println(r.name+"用技能q打了你一下,血量减少"+this.power);
	System.out.println(this.name+"你还剩余"+this.blood+"滴血");
	}
	}
	else
	{
	this.blood=this.blood-r.power;
	System.out.println(r.name+"用技能e打了你一下,血量减少"+r.power);
	System.out.println(this.name+"你还剩余"+this.blood+"滴血");
	if(this.blood>0)
	{
	r.blood=r.blood-this.power;
	System.out.println(this.name+"用技能r打了你一下,血量减少"+this.power);
	System.out.println(r.name+"你还剩余"+r.blood+"滴血");
	}
	}
	}
	//决定比赛的输赢的方法
	if(i>10||r.blood==this.blood)//当比赛的会和超过或者血量相等时
	System.out.println("此场为平局");
	else if(r.blood<=0)//对手的血量小于0
	{
		System.out.println(r.name+"你输了");


	
	this.exp=this.exp+1;//经验增长
	System.out.println(this.name+"你赢了");
	System.out.println(this.name+"你获得了1点经验");
	System.out.println(this.name+"你当前的等级是"+this.getDegree()  +"级 经验是"+exp);}
	else
	{
		System.out.println(this.name+"你输了");

		this.exp=this.exp+1;
		System.out.println(r.name+"你赢了");
		System.out.println(r.name+"你获得了1点经验");
		System.out.println(r.name+"你当前的等级是"+this.getDegree()+"级 经验是"+exp);
		
		
	}

	}
	
	
	
	
	
	
	


	
	} 


		   
		   
		   
	   
	   




public class winner {

	/**
	 * @param args
	 * @param  
	 */
//	public static void main(String[] args) 
//	{ 
//		
//		
//		// TODO Auto-generated method stub
//
//	}
//
//}
	public static void main(String[] arg)
	{

	fighting r1 = new fighting("艾希",100,350,8);//实例化一个对象r1
	fighting r2 = new fighting("德玛西亚",100,350,8);//实力化对象r2
	for(int i=0;i<10;i++)//打十个回合
	r1.attack(r2);//调用攻击函数
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值