类和对象总结2_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 类和对象总结2

类和对象总结2

 2013/7/18 0:13:43  wz94  程序员俱乐部  我要评论(0)
  • 摘要:一、构造(器)方法方法分为两类,普通方法和构造器方法。构造方法的格式:public类名(数据类型参数,.....){//代码}实例化对象的格式:类名对象名=new类名();类名对象名=new类名(参数值,.......);构造方法的用途:用来实例化对象、用来初始化对象某些属性值。每一个类默认的有一个无参的构造器,自己给类重新定义一个构造器,这叫做构造器方法的重载。如果在类中定义了构造方法,则只能使用你自己定义的构造方法,默认的无参构造方法不能再使用。构造方法没有任何返回值的定义
  • 标签:总结

一、构造(器)方法

?

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

?

????????????? 构造方法的格式:

????????????? 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对象。

?

class="java">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+" 被击败了。"); 
       }

?

?

?

?

发表评论
用户名: 匿名