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

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

类和对象2的总结

 2013/7/17 18:14:02  约巴拿  程序员俱乐部  我要评论(0)
  • 摘要:一、构造器方法Studentst1=newStudent();这里的Student()就叫做Student类的构造器方法。如果我们在类里不去自定义一个构造器方法的话,我们创建对象时,就只能使用类里面默认的无参构造器,创建格式为:类名对象名=new类名();。自己去定义一个构造器是有好处的。因为我们可以定义一个有参构造器。其格式为:public类名(int参数1,String参数2,...){};这些参数值是类里面的属性值。打个比方:现在类里面定义一个构造器
  • 标签:总结
      一、构造器方法
     Student st1=new Student();
  这里的Student()就叫做Student类的构造器方法。
  如果我们在类里不去自定义一个构造器方法的话,我们创建对象时,就只能使用类里面默认的无参构造器,创建格式为:类名 对象名=new 类名(); 。
   自己去定义一个构造器是有好处的。因为我们可以定义一个有参构造器。其格式为:
                  public 类名(int 参数1,String 参数2,...){};
   这些参数值是类里面的属性值。打个比方:
  现在类里面定义一个构造器:
       //带两个参数的构造器方法
  public Participant(String a,int b){
    this.ident=a;
  //使用构造器创建三个Participant类并初始化其身份和血量属性
  Participant part1=new Participant("Ultraman",18);
  Participant part2=new Participant("Monster",10);
而用类里默认的无参构造器来达到上述目的的话,就需要调用如下方法:
          Participant partl1=new Participant();
         part1.setIdent("Ultraman");
         part1.setBlood(18);
         Participant part2=new Participant
         part1.setIdent("Monster");
         part1.setBlood(10);
比较一下就能知道用有参构造器初始化参数的好处,参数越多的话,这个作用越明显。
   

    二、方法的重载
   在一个类中,可以定义多个同名,但参数类型和数量不同的方法,叫做方法的重载。
例如在类中定义这样一些构造器方法:
         public void study(){};
        public void study(int i){};
        public void study(String st){};
  对象调用时,传入的参数和那个方法定义的参数相配,则调用对应的方法。


   三、this关键字
1.this在类中用来指代当前对象,如:
  在Student类的构造器中:
       public Student(String name){
           this.name=name;
       }
在这里,this用来强调是将参数值name赋给使用这个构造器的对象的name属性,而不是赋给Student类里的name属性。

2.this可以在构造器中调用自己的另外一个构造器。
   
   四、值传递
值传递适用于Java的八大基本数据类型和String类型。
值传递的传递方法:对象调用方法用到了方法之外的数据值(该数据在调用前已有了存储空间),调用时开辟了新的存储空间用来存储该数据,调用方法之过后,该数据在方法内的存储被销毁,方法之外的存储依然存在,因此值不变。


  五、引用传递
  类中的对象名存储着其属性和方法等内容的首地址,该存储空间开辟在栈里面,对象和方法的内容存储在堆中。每个对象名对应着相应的属性和方法。当把一个对象名a2赋给a1,那么a1里面的属性和方法就变成a2的了,此时两个对象名都对应于对象a2的属性和方法。
  如:a1.setName("wo");
     a2.setName("ni");
     a1=a2;
此时会有a1.getName=a2.getName="ni"

练习:
回合制游戏:奥特曼和小怪兽要战斗,奥特曼还可以和Boss进行战斗,直到一方的血量为0的时候结束战斗,输出谁胜利了!
1.找出这个场景中的对象
2.找出每一个对象的特征和行为
3.根据类的格式和对象的特性与行为定义一个class
4.定义主函数的类,实例化对象和调用方法

分析:
        对象: 奥特曼、怪兽、Boss
       共有的特征:有身份、有血量
        共有的行为:能战斗
  根据以上共同的特征和行为定义一个类
     其程序如下:
                类Participant
     //定义一个参与者类Participant
public class Participant{
  //参与者身份属性
  private String ident;
  //参与者血量属性
  private int blood;
  //带两个参数的构造器方法
  public Participant(String a,int b){
    this.ident=a;
    this.blood=b;
  }
   //定义一个设置参与者身份的方法
  public void setIdent(String st){
    ident=st;
  }
  //定义一个获取参与者身份的方法
  public String getIdent(){
     return ident;
  }
  //定义设置血量的方法
  public void setBlood(int bl){
blood = bl;
  }
  //获取血量的方法
  public int getBlood(){
return blood;
  }
  //定义一个奥特曼与怪兽的战斗方法
  public void fightSmall(Participant par){
par.setBlood(par.getBlood() - 1);
        System.out.println(ident+"攻击了"+par.getIdent()+","+par.getIdent()+"剩余的血量是"+par.getBlood());
  }
  //定义一个奥特曼与Boss的战斗方法
  public void fightBig(Participant par){
par.setBlood(par.getBlood() - 2);
        System.out.println(ident+"攻击了"+par.getIdent()+","+par.getIdent()+"剩余的血量是"+par.getBlood());
  }
 
               类Game
   /定义类Game
public class Game{
  public static void main(String[] args){
  //使用构造器创建三个Participant类并初始化其身份和血量属性
  Participant part1=new Participant("Ultraman",18);
  Participant part2=new Participant("Monster",10);
        Participant part3=new Participant("Boss",20);
 
        //奥特曼与怪兽之间的战斗
        for(int i=1;i<11;i++){
            
            //奥特曼调用战斗方法
            part1.fightSmall(part2);
            //怪兽调用战斗方法
            part2.fightSmall(part1);
          }
       //输出奥特曼与怪兽之间的战斗结果
       System.out.println("奥特曼与怪兽之间的战斗结果:");
       
       if(part1.getBlood()<=0)   System.out.println("胜者是"+part2.getIdent());
       else if(part2.getBlood()<=0)  System.out.println("胜者是"+part1.getIdent());
           else     System.out.println("平局");
       //战胜怪兽后的奥特曼继续在余血的情况下和Boss战斗
      
        for(int i=1;i<5;i++){
            
            //奥特曼两次调用战斗方法
            part1.fightBig(part3);
            part1.fightBig(part3);
            //怪兽调用战斗方法
            part3.fightBig(part1);
          }
       //输出奥特曼与Boss之间的战斗结果
       System.out.println("奥特曼与Boss之间的战斗结果:");
       
       if(part1.getBlood()<=0)   System.out.println("胜者是"+part3.getIdent());
       else if(part3.getBlood()<=0)  System.out.println("胜者是"+part1.getIdent());
           else     System.out.println("平局");

  }
 
}
发表评论
用户名: 匿名