第三次课时总结

                                               第三次课时总结

         方法可以分为普通方法和构造方法两种,普通方法是用来描述对象的行为,而构造方法是用来实例化对象的。下面主要介绍一下构造方法。

        构造方法格式如下:

         public 类名(数据类型 参数名){

}

         构造方法和普通方法的区别如下:

       (1) 构造方法和普通方法的返回值不同,构造方法是不能定义返回值类型的,要注意的是不能定义返回值类型不代表构造函数没有返回值。

       (2)构造函数的名字必须为类名。

   

          此外,每一个类默认的都有一个构造方法,即通过 new 类名();的调用来创建一个对象。可以说构造方法主要由以下两个作用:

          (1)用来实例化对象,例如:

                         Student stu = new Student();

            当然我们也可以为类重新定义构造方法,此时系统默认的构造方法江北覆盖,不能再被调用。

          (2) 给属性赋初值。

              看如下代码:

                  Student stu = new Student(name);

              在这里要注意的是new操作之后在堆内存中开辟了一块空间,在其中存储了属性,相关方法,即开始时付给的初值。但在栈内存中存储的是堆内存中构造函数所返回的地址。

             下面在介绍一下方法重载,普通方法和构造方法都可以进行方法重载。要进行方法重载必须要满足一定的条件:

             首先方法名字要完全相同。然后一下三个条件满足其中一个才可进行方法重载

              (1)参数个数不同

              (2)参数个数想通但参数类型不同

              (3)参数和数类型均相同但出现的顺序不同

              重载后的方法调用会根据参数的不同来自动调用。

               this关键字表示的是当前的对象,当参数名和属性名相同时,要在属性名前加this.

                  

               练习:

                 编制一个简单回合制游戏。

                 源代码如下:

  

package second0706;
//定义一个一个角色类
public class Role {
	private String name;//名字属性
	private int hp;//生命属性
	private int speed;//速度属性
	private int atk;//攻击力属性
	//设置名字的方法
	public void setName(String n) {
		name = n;
	}
	//获取名字的方法
	public String getName(){
		return name;
	}
	//设置生命的方法
	public void setHp(int n){
		hp = n;
	}
	//获取生命的方法
	public int getHp(){
		return hp;
	}
	//设置速度的方法
	public void setSpeed(int n){
		
		speed = n;
	}
	//获取速度的方法
	public  int  getSpeed(){
		return speed;
	}
	//设置初始攻击力的方法
	
	public void setAtk(int n){
		atk = n;
	}
	//设置获取攻击力的方法
	public int getAtk(){
		return atk;
	}
	public void attack(Role r){
		r.setHp(r.getHp()-this.getAtk());
		 System.out.println(r.getName()+"的气血石"+r.getHp());
	}
	
	
	}








package second0706;
import java.util.Random;

//定义一个战斗类
public class fight {
	//函数的入口
	public static void main(String [] args){
		//设置两个角色
		Role r1 = new Role();
		r1.setName("熊哥");
		r1.setHp(100);
		
		r1.setSpeed((int)(Math.random()*14+1));
		int j = (int)(Math.random()*29+1);
		
		r1.setAtk(j);
		Role r2 = new Role();
		r2.setName("我");
		r2.setHp(120);
		r2.setSpeed((int)(Math.random()*8+5));
		int x =(int)(Math.random()*20+5);
		r2.setAtk(x);
		
		
		System.out.println("决斗开始");
		
		for(int i =0;i<100;i++){
			
		if(r1.getSpeed()>r2.getSpeed()){
			r1.attack(r2);
			r2.attack(r1);
			if(r1.getHp()<=0||r2.getHp()<=0){
				
				
				System.out.println("游戏结束");
				if(r1.getHp()<=0){
					System.out.println(r1.getName()+"被"+r2.getName()+"杀死了");
				}else if(r2.getHp()<=0){
					System.out.println(r2.getName()+"被"+r1.getName()+"杀死了");
				}
				break;
				 
				 } 
				 
			
				 
				 
				 
				 
			 
		}else if(r1.getSpeed()<r2.getSpeed()){
			r2.attack(r1);
			r1.attack(r2);
			 if(r1.getHp()<=0||r2.getHp()<=0){
				 
				 System.out.println("游戏结束");
					if(r1.getHp()<=0){
						System.out.println(r1.getName()+"被"+r2.getName()+"杀死了");
					}else if(r2.getHp()<=0){
						System.out.println(r2.getName()+"被"+r1.getName()+"杀死了");
					}
					break;
				 }
			
		                 }
                                  }
                }
}

	 
	
	

			
		
		
		
		
		
	

		
		
			
			
		
		
	


猜你喜欢

转载自csuhaore.iteye.com/blog/1901595