从日常生活中看对象
其实对象这个名次对我们来说一点也不陌生,因为我们的日常生活中。随处可见的都是对象,小到地上的一粒沙,大到中国的万里长城,埃及的金字塔,所有的东西都是对象(万物皆对象)。
类只是个抽象的称呼,而对象是个看得到,摸的到,听得到的实例。有些时候我们也不用类的名称来称呼一个对象,而是直接使用对象的名称,如我家有只狗,它的名字叫小白,这里的狗是类名称,而小白就是对象的名称。既然它要叫小白而不叫小黄,小黑,一定是它本身有不同于其他狗对象的地方,比如说毛发的颜色,而你可能是它的主人,因为我们很少为陌生的狗取名字。而毛发的颜色,主人是谁等等都是用来描述这只狗的东西,我们称之为属性。
类的声明
public class 类名{
private 数据类型 属性;
public 返回值数据类型 成员函数名();
}
对象的实例化
类名 对象名 = new 类名();
如Student s1=new Student();
调用方法
对象名.方法名(实参或参数值);
如Student.study()
Student.play(2);
下面是一个英雄联盟英雄徳玛西亚之力单挑大龙男爵的代码:
package netJava0706类和对象;
public class player{
/**
* 定义属性
*/
private String name;
private double blood;
private double attack;
private double defense;
/*
* 定义方法
*/
public void setName(String s){
name=s;
}
public String getName(){
return name;
}
public void setBlood(double d){
blood=d;
}
public double getBlood(){
return blood;
}
public void setAttack(double d){
attack=d;
}
public double getAttack(){
return attack;
}
public void setDefense(double d){
defense=d;
}
public double getDefense(){
return defense;
}
public void NormalAttack(Boss b){
double HP=b.getBlood()-(210-b.getDefense());
b.setBlood(HP);
System.out.print("盖伦对男爵造成了210点物理伤害,男爵血量剩余"+HP+"点");
}
public void Q(Boss b,player p){
double HP=b.getBlood()-130-p.getAttack()*1.4+b.getDefense();
b.setBlood(HP);
System.out.println("Boss受到了盖伦致命打击技能的伤害,血量减少"+(130+p.getAttack()*1.4-b.getDefense())+",被沉默一个回合,男爵血量剩余"+HP+"点");
}
public void W(player p){
p.setBlood(p.getBlood()+300);
System.out.println("盖伦获得一个持续性的防御护盾,增加盖伦300点血量");
}
public void E(Boss b,player p){
double HP=b.getBlood()-p.getAttack()*1.1-120;
b.setBlood(HP);
System.out.println("盖伦快速的旋舞大剑,每回合对男爵造成"+(p.getAttack()*1.1+120)+"点加上盖伦攻击力的110%点物理伤害,持续1回合。" +
"男爵血量剩余"+HP+"点");
}
public void R(Boss b){
double HP=b.getBlood()-525+b.getDefense();
b.setBlood(HP);
System.out.println("盖伦召唤徳玛西亚之力,试图斩杀男爵,造成男爵"+(525-b.getDefense())+"点魔法伤害,男爵每损失3.5伤害会多增加1伤害。"
+"男爵血量剩余"+HP+"点");
}
}
package netJava0706类和对象;
public class Boss {
private String name;
private double blood;
private double attack;
private double defense;
public void setName(String s){
name=s;
}
public String getName(){
return name;
}
public void setBlood(double d){
blood=d;
}
public double getBlood(){
return blood;
}
public void setAttack(double d){
attack=d;
}
public double getAttack(){
return attack;
}
public void setDefense(double d){
defense=d;
}
public double getDefense(){
return defense;
}
public void NormalAttack(player p){
double HP=p.getBlood()-(460-p.getDefense());
p.setBlood(HP);
System.out.println("男爵对盖伦造成了"+(460-p.getDefense())+"点物理伤害。盖伦血量剩余"+HP+"点");
}
}
package netJava0706类和对象;
import java.util.Random;
public class war {
public static void main(String[] args){
player Garen=new player();
Garen.setName("盖伦");
Garen.setBlood(4500.0);
Garen.setAttack(210.0);
Garen.setDefense(300.0);
Boss Baron=new Boss();
Baron.setName("男爵");
Baron.setBlood(9876.0);
Baron.setAttack(460.0);
Baron.setDefense(120.0);
Random r=new Random();
while (Garen.getBlood()>0&&Baron.getBlood()>0){
int choice=r.nextInt(4);
switch (choice){
case 0:Garen.NormalAttack(Baron);break;
case 1:Garen.Q(Baron,Garen);break;
case 2:Garen.W(Garen);break;
case 3:Garen.E(Baron,Garen);break;
case 4:Garen.R(Baron);break;
}
Baron.NormalAttack(Garen);
}
if(Garen.getBlood()>0)
System.out.print("盖伦斩杀男爵!!!");
else
System.out.print("男爵杀死盖伦!!!T.T");
}
}
调试结果(部分):
Boss受到了盖伦致命打击技能的伤害,血量减少304.0,被沉默一个回合,男爵血量剩余863.0点
男爵对盖伦造成了160.0点物理伤害。盖伦血量剩余140.0点
盖伦获得一个持续性的防御护盾,增加盖伦300点血量
男爵对盖伦造成了160.0点物理伤害。盖伦血量剩余280.0点
盖伦快速的旋舞大剑,每回合对男爵造成351.0点加上盖伦攻击力的110%点物理伤害,持续1回合。男爵血量剩余512.0点
男爵对盖伦造成了160.0点物理伤害。盖伦血量剩余120.0点
盖伦对男爵造成了210点物理伤害,男爵血量剩余422.0点男爵对盖伦造成了160.0点物理伤害。盖伦血量剩余-40.0点
男爵杀死盖伦!!!T.T