类和对象

       类是抽象的概念,而对象是具体的的概念。类是对象的抽象化,对象则是类的具体化。

       了解了类和对象后,做一个简单的奥特曼打小怪兽的练习。要做奥特曼打小怪兽,首先要定义三个类,一个用于描述奥特曼的特征和行为,一个用于描述小怪兽的特征和行为,还有一个就是来实现打斗的类。确定了所需的类后,就可以开始分析每个类所需要实现的功能:奥特曼类和小怪兽类主要是用于存储各自的“信息”(即属性和成员函数),打斗的类用于实现奥特曼和小怪兽重复相互攻击,直到一方血量为0时,输出另一方获胜。有了这些就可以着手进行程序的编写了。

       在编写过程中难免会出现错误:


 

错误:奥特曼类的属性name在怪兽类中不可见

原因:奥特曼类的属性是私有(private)属性,在怪兽类中是无法访问的

扩充:java中的访问修饰符有四种:

          公有的(public):只要在同一个项目中就可以被访问

          私有的(private):只能在当前类中才可以被访问

          受保护的(protected):只要在同一个包下或者存在继承关系的子类中可以被访问

          默认的:只要在同一个包(文件夹)下就可以被访问

解决措施:增加一个存者setter,一个传者getter。它们作为与外界进行沟通的桥梁,使其他类可以通过此方法访问该类中私有属性而不会报错。



代码如下:

//定义一个奥特曼类


public class Aoteman {
 

//属性
 

private String name;


private int blood;


//构造方法
 

public Aoteman(String name,int blood){


  this.name=name;
  this.blood=blood;
 

}
 

public void setName(String name){


  this.name=name;


 }
 

public String getName(){


  return name;


 }
 

public void setBlood(int blood){


  this.blood=blood;


 }


public int getBlood(){


  return blood;


 }
 

//打的方法


 public void play(Monster mon){


  System.out.println(name+"打了"+mon.getName()+","+mon.getName()+"的血量减少了"+20);
  mon.setBlood(mon.getBlood()-20);
  System.out.println(mon.getName()+"的血量剩余"+mon.getBlood());
 }

 

//定义一个怪兽类


public class Monster{


 //属性


 private String name;

 private int blood;


 //构造方法


 public Monster(String name,int blood){


  this.name=name;


  this.blood=blood;

}


 public void setName(String name){


  this.name=name;


 }
 

public String getName(){


  return name;


 }
 

public void setBlood(int blood){


  this.blood=blood;


 }
 

public int getBlood(){


  return blood;


 }


 //打的方法


 public void play(Aoteman ao){


  System.out.println(name+"打了"+ao.getName()+","+ao.getName()+"的血量减少了"+15);
  ao.setBlood(ao.getBlood()-15);
  System.out.println(ao.getName()+"的血量剩余"+ao.getBlood());
 }

}

 


//定义一个打斗的类


public class Play {


    //主函数 
 public static void main(String[] args) {


  //实例化对象


  Monster mon=new Monster("小怪兽",200);


 
 Aoteman ao=new Aoteman("奥特曼",150);


  
  while(ao.getBlood()>0&&mon.getBlood()>0){
 

  ao.play(mon);


   if(mon.getBlood()<=0)


    System.out.println(ao.getName()+"赢了");


   else


    mon.play(ao);


   if(ao.getBlood()<=0)


     System.out.println(mon.getName()+"赢了");


  }


  
 }

}

运行结果如下:

奥特曼打了小怪兽,小怪兽的血量减少了20

小怪兽的血量剩余180

小怪兽打了奥特曼,奥特曼的血量减少了15

奥特曼的血量剩余135

奥特曼打了小怪兽,小怪兽的血量减少了20

小怪兽的血量剩余160

小怪兽打了奥特曼,奥特曼的血量减少了15

奥特曼的血量剩余120

奥特曼打了小怪兽,小怪兽的血量减少了20

小怪兽的血量剩余140

小怪兽打了奥特曼,奥特曼的血量减少了15

奥特曼的血量剩余105

奥特曼打了小怪兽,小怪兽的血量减少了20

小怪兽的血量剩余120

小怪兽打了奥特曼,奥特曼的血量减少了15

奥特曼的血量剩余90

奥特曼打了小怪兽,小怪兽的血量减少了20

小怪兽的血量剩余100

小怪兽打了奥特曼,奥特曼的血量减少了15

奥特曼的血量剩余75

奥特曼打了小怪兽,小怪兽的血量减少了20

小怪兽的血量剩余80

小怪兽打了奥特曼,奥特曼的血量减少了15

奥特曼的血量剩余60

奥特曼打了小怪兽,小怪兽的血量减少了20

小怪兽的血量剩余60

小怪兽打了奥特曼,奥特曼的血量减少了15

奥特曼的血量剩余45

奥特曼打了小怪兽,小怪兽的血量减少了20

小怪兽的血量剩余40

小怪兽打了奥特曼,奥特曼的血量减少了15

奥特曼的血量剩余30

奥特曼打了小怪兽,小怪兽的血量减少了20

小怪兽的血量剩余20

小怪兽打了奥特曼,奥特曼的血量减少了15

奥特曼的血量剩余15

奥特曼打了小怪兽,小怪兽的血量减少了20

小怪兽的血量剩余0

奥特曼赢了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值