`

类与对象

    博客分类:
  • JAVA
阅读更多

                                            类vs 对象

 

           在编程语言的学习中我们经常提到的通常会使类和对象,在初期学习c语言或者是c++的同学或许还没体会到这一点,因为就算是c++也只是部分面向对象化语言,但是在java语言上分析的话,java是完全面向对象化的语言,可不要小看这一个“完全”字眼,因为在我们初次与计算机交流时,最简单的hello word  就是用的public static void main(String 【】args【】)

谁说主函数就不是一个类了??

        那 生活中有那些是对象?
 对象:具体的某一个物体或者具体的某一个事物就是一个对象。
 举例:
  某一台电脑
   特征:颜色,大小,型号,价格,材质,重量,品牌,...
   行为(功能,用途):打字,计算,开机,连网,玩游戏,...
  某一件衣服

所有你能想象到的都可以化归为类,“人以类聚,物以群分”脑海中突然冒出这一句话,所以在java中类的定义必须准确。

类和对象的关系是:类是抽象的,对象是实在的。

类是对象对属性和方法的抽象定义

this 关键字的陷阱:

在java中调用当前类的对象只用this.属性或方法即可

但是:

在C语言以及C++中相当于是一个指针,调用当前类的对象需要*this.属性及方法,这个陷阱曾经困扰了我很长时间,所以同时学习两门这种语言的同僚们要注意。

接下来就是用类与对象实现拳皇这个经典游戏的具体过程:

游戏很简单,到那时缺憾也是不少,比如说至进行了4人对战,而标准的拳皇应该是六人,三人各属一方。

再者未实现防御功能,以及积累一定攻击力可以放大招的情况,这不得不说是一种遗憾,希望在接下来的深入学习中可以实现。

package lesson1302;
import java.util.*;

public class King {
	private String name;//定义名字属性
	private int power;//定义攻击力属性
	private int blood;//定义血量属性
	public King(String name,int power,int blood){//给构造函数赋值
		this.name=name;//表示将传入的name值给当前调用构造函数的对象的name属性值
		this.power=power;//表示将传入的power值给当前调用构造函数的对象的power属性值
		this.blood=blood;//表示将传入blood值给当前调用构造函数的对象的blood属性值
		}
	public void gongji(King a){//定义攻击方法
		Random random = new Random();
		     //被攻击方失去血量
			a.blood-=this.power;//被攻击方失去血量
			System.out.println(this.name+"攻击了"+a.name+"  攻击力为"+this.power);//
			System.out.println(this.name+"剩余血量:"+this.blood+"  "+a.name+"剩余血量为"+a.blood);
			
		
			if(a.blood<0){//判断胜负
				System.out.println("THE KO-King IS+"+this.name);
				
			}
			else{
				if(this.blood<0)//判断胜负
			
				System.out.println("THE KO-King IS"+a.name);//输出赢者
				}
			
			
}
			

          
        
		
	
	public static void main(String[] args){//主函数入口
		King king1;//定义第一个对象
		king1=new King("暴走列昂娜",500,1000);//设置暴走列安娜的的攻击力以及血量
		King king2;
		king2=new King("不知火舞",300,1200);//设置暴走不知火舞的攻击力以及血量
		King king3;
		king3=new King("草雉京",800,1300);//设置暴走草雉京的的攻击力以及血量
		King king4;
		king4=new King("二阶堂红丸",700,1000);//设置暴走二阶堂红丸的的攻击力以及血量
		while(king1.blood>0&&king3.blood>0){//判断输赢
			king1.gongji(king3);//实行循环攻击
			king3.gongji(king1);
		}
		if(king1.blood>0){//假定king1赢了
			while(king1.blood>0&&king4.blood>0){//那么king1暴走列安娜要和第二阵营的
				//那么king1暴走列安娜要和第二阵营的king4二阶堂红丸决斗
				king1.gongji(king4);
				king4.gongji(king1);
			}
			if(king1.blood>0){
				System.out.println("第一阵营胜利!!!");//如果暴走列安娜赢了,那么第一阵营就胜出
			}
			if(king4.blood>0){
				System.out.println("平局!!!");//如果king4赢了,那就是平局
			}
			
		}
		else{             //假定king3赢了
			while(king3.blood>0&&king2.blood>0){//那么king3就要和king2决斗
				king3.gongji(king2);//互相攻击
				king2.gongji(king3);//互相攻击
			}
			if(king3.blood>0){
				System.out.println("第二阵营胜利!!!");//如果king3胜利了,那么第二阵营就胜出
			}
			if(king2.blood>0){
				System.out.println("平局!!!");//如果king2赢了,那么就是平局
			}
		}
		
		
		
		
			
		}
		
		 
	
        
                   
         }
	
	
	
		
	

           

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics