`
约巴拿
  • 浏览: 18945 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

类和对象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("平局");

  }
 
}
分享到:
评论

相关推荐

    类与对象实验

    2.以下是一个类中包含另一个类对象成员(类的组合)的例子,试分析并给出程序的运行结果. #include class Son {  int age; public: Son(){ age=1;} Son(int i){age=i;} void print(){ cout儿子的年龄是:";} ...

    php5 类与对象

    php5 类与对象 个人总结与简单的例子,类与对象1. PHP 类与对象 2. PHP 类的继承 extends 关键字 3. PHP 构造方法 __construct() 4. PHP 析构方法 __destruct() 5. PHP final 关键字 6. PHP 类的接口 interface...

    java类与对象实验报告.docx

    1、编写一个名为“复数”的类,包含复数的实部和虚部(数据成员),以及复数之间的基本算术运算:加、减(方法成员),并要求复数加减运算,程序运行中能对给定的复数进行运算,并打印运算的结果。 2、用类来描述游戏...

    1-2章总结面向对象

    类和对象的关系 对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型。 定义为 class 类名{ } 它们的关系是,对象是类的实例,类是对象的模板。

    类与对象实验报告

    一、实验目的 1.通过对所选题目相关需求的分析,掌握需求分析的方法和过程; 2.掌握需求分析相关文档的组织规范; 3. 完成一个小型软件系统的需求分析。

    JAVA实验一:类和对象 实验报告-天津理工大学

    2.理解并掌握Java中定义类、创建对象、使用对象成员的方法 3.掌握Java类中方法的传值 4.掌握对象的组合 实验要求: 1.按照要求编制程序; 3.为增加程序可读性,请在程序中对类成员进行适当注释说明; 4.整理...

    易语言面向对象编程 面向对象学习

    1.对象和类 2 2.类的“成员”与“方法” 2 3.实例化 2 4.继承 3 二.牛刀小试 3 1.定义一个类,生成实例对象 3 2.“_初始化” 与 “_销毁” 5 三.一个更丰富的“员工”类 7 四.再说继承 9 五.类的多态性 11...

    类与对象~~~~~~

    电脑是类对象,我的电脑是实例对象。 类:无法确定唯一性;实例却具体唯一性。 举例: 我和你都是中国人。 类:中国人 实例:我和你 我们的共同点:黑眼睛、黄皮肤、用筷子吃饭、会讲汉语... 共同点归纳为:1...

    Python面向对象实现一个对象调用另一个对象操作示例

    我先总结一下python中的类的特点: 1.类中所有的方法的参数中都必须加self,并且是第一个参数 2.__init__方法用来初始化对象,也必须加self 3.用__str__方法,方法中有返回值,可以直接用print(对象引用的变量),__...

    C++类成员和数据成员初始化总结

    类对象的构造顺序是这样的: 1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员 2.进入构造函数后在构造函数中执行一般计算 1.类里面的任何成员变量在定义时是不能初始化的。 2.一般的数据成员可以在...

    面向对象程序设计(c++)课程设计实验报告

    一.实验目的及要求………………...2. 对各个功能模块分析设计抽象并实现对象类,重点是各类的属性和行为,类之间的关系; 3.在类的设计上,尽量自己设计,并采用继承、多态、重载等概念; 4. 所有数据用文件存储;

    《java面向对象程序设计-继承和多态》教案.doc

    第四章 面向对象的概念和 Java 实现-2 回顾 类是具有相同属性和行为的一组对象的 集合 , 对象是类的实例 封装是隐藏对象实现细节的过程,以便不让用户看到实现的细节 类可用Class 来定义,类的变量和方法可被该类的...

    ASP.NET中的FILE对象总结

    在ASP.NET中引入了名字空间,其中文件操作对应的... 在asp.net中,可以使用2种方法来创建一个file对象  (1)使用dim 语句来创建一个file对象  dim mikecatfile as file  mikecatfile.create("c:\mikecat.txt")  

    明仔PHP面向对象(六日通)教程

    (三) 类属性 和类方法 3-1 类属性 和类方法 (四)使用New函数 将对象实例化 4-1 使用New函数 将对象实例化 (五)面向对象开发的学习笔记 5-0 面向对象开发的学习笔记 5-1 对象中的$this关键字 5-2 初始化对象函数 __...

    易语言对象操作word纯源码

    2,对象.查看(),这个命令是必须使用的,同样是方便查找对象,方法,并了解在易语言中,到底该用.读对象属性(),还是.对象型方法();。3,记住几个主要的对象:application, document, selection, table, cell, range。4,操作...

    C++面向对象程序设计总结.doc

    继承是这样的一个过程,即某类的对象得到另一类对象的属性。 多态指的是,一个名称,多种形态。在程序中,我们可以借此定义多个同名函数。此特 性亦可重载运算符,这样一来,同一个运算符在不同的实例下,会有不同...

    初学者python笔记(面向对象编程、类与对象)

    文章目录面向对象设计类与对象的概念1、类与对象的本质2、面向对象设计 到 面向对象编程3、类实例化4、例如一个学校类面向对象编程1、案例2、面向对象语言和面向对象编程之间的关系3、类的属性4、类的其他一些属性5...

    Java 基础核心总结 +经典算法大全.rar

    节点流和处理流 Java IO 的核心类 File Java IO 流对象 字节流对象InputStream OutputStream 字符流对象Reader Writer 字节流与字符流的转换新潮的 NIO 缓冲区(Buffer)通道(Channel) 示例:文件拷贝案例 BIO 和 NIO ...

    python实验五.py

    1、 一个三维向量类,并定义相应的特殊方法实现两个该类对象之间的加、减运算(要求支持运算符+、-),实现该类对象与标量的乘、除运算(要求支持运算符*、/),以及向量长度的计算(要求使用属性实现)。...

    设计模式可复用面向对象软件的基础.zip

    4.1 Adapter(适配器)—类对象结构型 模式 92 4.2 Bridge(桥接)—对象结构型 模式 100 4.3 Composite(组成)—对象结构型 模式 107 4.4 Decorator(装饰)—对象结构型 模式 115 4.5 FACADE(外观)—对象结构型...

Global site tag (gtag.js) - Google Analytics