类和对象总结2

一、构造(器)方法

 

              方法分为两类,普通方法和构造器方法。

 

              构造方法的格式:

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

                              //代码

              }

              实例化对象的格式:

              类名   对象名 = new   类名();

              类名   对象名 = new   类名(参数值,.......);

      

              构造方法的用途:

              用来实例化对象、用来初始化对象某些属性值。

 

              每一个类默认的有一个无参的构造器,自己给类重新定义一个构造器,这叫做构造器方法的重载。如果在类中定义了构造方法,则只能使用你自己定义的构造方法,默认的无参构造方法不能再使用。
              构造方法没有任何返回值的定义,调用时会返回首地址。

 

二、方法重载(overLoad)

 

              在一个类中可以定义多个同名,但参数类型和数量不同的方法,叫做方法的重载。

            

              条件:

              1.方法名相同;

              2.方法所带的参数个数、参数类型或参数顺序必须有一个不同。

 

               调用:根据参数调用重载的方法。

 

 

三、this关键字

            

              this表示当前调用方法的对象。

              this可以避免对象的某个属性由于就近原则被当成方法里的参数。可以利用this在构造器中调用构造器。       this.name = name;//区分属性和参数       this("无名");//调用带一个字符串参数的构造方法

 

 

四、值传递与引用传递

 

              值传递适用于Java中的八大基本数据类型和String类型。

              传递方法是传值。

 

              引用传递适用于Java中的引用数据类型(对象类型,类类型)。

              引用数据类型包含:类、数组、接口、抽象类。               传递方法是传址。

 

                              传递方法
值传递传值。将数据保存在栈里,调用方法时只改 变方法中参数的值,不会影响到原来定义给变量的值。并且方法中的参数所占空间在调用完毕后会被立即销毁释放内存。
引用传递传址。实例化对象时,new是在堆中开辟地址保存属性、方法。构造方法将首地址返回给对象,重新赋值时地址改变,指向新的地址,而原先空间被销毁。

 

 

五、代码

 

回合制游戏:奥特曼和小怪兽要战斗,奥特曼还可以和Boss进行战斗,直到一方的血量为0的时候结束战斗,输出谁胜利了!

 

 

思路:在上一节的代码基础上进行改进。

               1.由于与奥特曼战斗的人物多了一个,所以需多定义一个Boss类。

               2.对奥特曼的战斗方法进行重载。

               3.用构造方法简化代码。

               4.实例化Boss对象。

 

public class VS {
 

       public static void main(String[] args){
            //实例化
            Outman ot = new Outman("奥特曼",3000,600);
            Monster mt = new Monster("小怪兽",5000,360);
            Boss mt2 = new Boss("Boss",8000,200);
          
           

            
            //显示初始血量
            System.out.println(ot.getName()+" hp "+ot.getHp()); 
            System.out.println(mt.getName()+" hp "+mt.getHp());
            System.out.println(mt.getName()+" 率先发动攻击:");


            do{
                   ot.setHp(mt.doHurt(ot));
                   ot.getHp();
                   //显示剩余血量
                   if(ot.getHp()>0){
                       System.out.println(ot.getName()+" 血量还剩 "+ot.getHp()+" 点。");
                       mt.setHp(ot.doHurt(mt));
                       if(mt.getHp()>0){
                            System.out.println(mt.getName()+" 血量还剩 "+mt.getHp()+" 点。");
                       }
                   }              
   
            }while(ot.getHp()>0&&mt.getHp()>0);

            //输出结果
            mt.setHp(ot.result(mt));
            mt.getHp();
            mt.result();




            System.out.println();

            //显示初始血量
            ot.setHp(3000);
            System.out.println(ot.getName()+" hp "+ot.getHp()); 
            System.out.println(mt2.getName()+" hp "+mt2.getHp());
            System.out.println(ot.getName()+" 率先发动攻击:");




            do{
                   ot.setHp(mt2.doHurt(ot));
                   ot.getHp();
                  
                   //显示剩余血量
                   if(ot.getHp()>0){
                       System.out.println(ot.getName()+" 血量还剩 "+ot.getHp()+" 点。");
                       mt2.setHp(ot.doHurt(mt2));
                       if(mt2.getHp()>0){
                            System.out.println(mt2.getName()+" 血量还剩 "+mt2.getHp()+" 点。");
                       }
                   }              
   
            }while(ot.getHp()>0&&mt2.getHp()>0);

            //输出结果
            mt2.setHp(ot.result(mt2));
            mt2.getHp();
            mt2.result();


     }

 

 

public class Outman{
      private String name;
      private int hp;
      private int hurt; 


      
      public Outman(String name,int hp,int hurt){
            this.name = name;
            this.hp = hp;
            this.hurt = hurt;
      }
      
      //设置名字属性的方法
      public void setName(String n){
            name = n;
      }


      //获取名字属性的方法
      public String getName(){
            return name;
      }
      
      //设置血量属性的方法
      public void setHp(int h){
            hp = h;
      }

      //获取血量的方法
      public int getHp(){
            return hp;   
      }

      //设置攻击力属性的方法
      public void setHurt(int t){
            hurt = t;
      }
 
      //获取攻击力的方法
      public int getHurt(){
            return hurt;
      }
 


      //对怪兽造成伤害的方法
      public int doHurt(Monster m){

                m.setHp(m.getHp()-hurt);          
                m.getHp();
                
                System.out.print(name+" 对 "+m.getHp()+" 造成 "+hurt+" 点伤害。");
             
                return m.getHp();
      }
    

      //输出对怪兽结果的方法
      public int result(Monster m){
            System.out.println();
            if(hp>0)
               System.out.println(name+" 取得胜利。"); 
             else{
               //主角光环,正义必胜。。。。。
               System.out.println(name+" 使用动感光波秒杀了对手。"); 
               m.setHp(0);
               m.getHp();
             }  
             return m.getHp();
      }

      //对Boss造成伤害的方法
      public int doHurt(Boss m){

                m.setHp(m.getHp()-hurt);          
                m.getHp();
                
                System.out.print(name+" 对 "+m.getName()+" 造成 "+hurt+" 点伤害。");
             
                return m.getHp();
      }
    

      //输出对Boss结果的方法
      public int result(Boss m){
            System.out.println();
            if(hp>0)
               System.out.println(name+" 取得胜利。"); 
             else{
               //主角光环,正义必胜。。。。。
               System.out.println(name+" 使用动感光波秒杀了对手。"); 
               m.setHp(0);
               m.getHp();
             }  
             return m.getHp();
      }

 

 

public class Monster{

      private String name;
      private int hp;
      private int hurt;
      
     
      public Monster(String name,int hp,int hurt){
             this.name = name;
             this.hp = hp;
             this.hurt = hurt;
      }
 
      //设置名字属性的方法
      public void setName(String n){
            name = n;
      }


      //获取名字属性的方法
      public String getName(){
            return name;
      }
      
      //设置血量属性的方法
      public void setHp(int h){
            hp = h;
      }

      //获取血量的方法
      public int getHp(){
            return hp;   
      }

      //设置攻击力属性的方法
      public void setHurt(int t){
            hurt = t;
      }
 
      //获取攻击力的方法
      public int getHurt(){
            return hurt;
      }
  


      //对对手造成伤害的方法
      public int doHurt(Outman o){
               
                o.setHp(o.getHp()-hurt);          
                o.getHp();
                if(o.getHp()>0)
                    System.out.print(name+" 对 "+o.getName()+" 造成 "+hurt+" 点伤害。");
             
                return o.getHp();
      }
    

      //输出结果的方法
      public void result(){
            if(hp>0)
               System.out.println(name+" 取得胜利。"); 
             else
               System.out.println(name+" 血量为0。 "+name+" 被击败了。"); 
       }

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值