`
约巴拿
  • 浏览: 19730 次
  • 性别: 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("平局");

  }
 
}
分享到:
评论

相关推荐

    类和对象总结

    总结,类和对象是构建复杂软件系统的基石。熟练掌握它们的概念、使用方式以及相关特性,对于理解和编写高质量的面向对象程序至关重要。通过不断的实践和学习,我们可以逐步提升在OOP领域的专业技能。

    类和对象、构造方法总结

    在编程领域,面向对象编程(Object-Oriented Programming, OOP)是一种常见的编程范式,其中类和对象是核心概念。本篇文章将深入探讨类与对象以及构造方法的相关知识点。 首先,类是对象的蓝图,它定义了一组特性和...

    C++ 类与对象习题

    - **类定义**: C++中用来描述一类对象的共同特征和行为的概念。它是一个抽象数据类型,包含了数据成员和成员函数。 - **成员函数**: 定义在类中的函数,用于实现类的行为。 - **数据成员**: 定义在类中的变量,用于...

    类对象和类指针

    总结,类对象和类指针在不同场景下各有优势。类对象更适合于轻量级对象和效率要求高的场合,而类指针则适用于需要动态绑定和管理大量对象的情况。理解并熟练运用这两种方式,能够帮助我们更好地设计和实现面向对象的...

    类与对象-java实验报告

    本次实验的目的是深入理解和掌握Java编程语言中的类与对象的概念,通过设计和实现一系列几何图形类,包括点、直线、三角形、矩形、正方形、圆形和椭圆,来实践面向对象的设计方法。实验要求学生不仅能够创建数据域和...

    java的类和对象

    总结一下,Java中的类和对象是构建程序的基本单元,而抽象类和接口提供了代码重用和多态性的机制。对于初学者来说,理解和熟练掌握这些概念是掌握Java编程的基础。通过不断的练习和实践,可以更好地运用这些知识来...

    类与对象实验

    在`main()`函数中,创建了两个`score`对象`stu1`和`stu2`,每个对象都有自己的构造函数,用于初始化`english_score`。然后,通过`printscore()`函数输出它们的分数。实验步骤详细描述了如何使用调试器观察类的构造...

    java类与对象实验报告.docx

    在Java编程语言中,类是面向对象编程的基础,它用于封装数据和操作这些数据的方法。在给定的实验中,有两个主要的类被创建:`complex1` 和 `Complex`,它们都用来表示复数,并提供了复数的加法和减法运算。 1. **...

    总结一——浅谈Java的类与对象

    总结来说,Java的类与对象是实现面向对象编程的基础,它们帮助我们构建可重用、可扩展的代码结构。理解并熟练掌握这些概念对于成为一个合格的Java开发者至关重要。通过阅读“浅谈Java的类与对象”这篇文档,你将能更...

    python面向对象学习总结.pdf

    2. 类和对象(Class and Object): 类是对象的蓝图,可以理解为一个模板,通过这个模板可以创建出具体的实例对象。在Python中,使用`class`关键字定义一个类。例如,`MyFirstTestClass`就是一个类。类可以有属性和...

    Jsp内置对象session总结

    JSP 内置对象 Session 总结 Session 对象是一种 JSP 内置对象,用于管理客户端与服务器端之间的会话期。下面是 Session 对象的详细介绍。 什么是 Session Session 对象是一个 JSP 内置对象,它在第一个 JSP 页面...

    Java第4章 认识类和对象.含源代码

    在Java编程语言中,类和对象是核心概念,它们构成了面向对象编程的基础。本章将深入探讨这两个概念,以及如何在实际编程中运用它们。源代码的提供将帮助我们更直观地理解这些理论知识。 首先,我们需要理解什么是类...

    Java面向对象思想总结

    - 如果子类覆盖了父类的方法,那么把子类对象当作父类对象来看时,调用该方法实际上是调用了子类中覆盖的方法。 - **示例代码**: ```java public class Person { public void sayHello() { System.out....

    2015.6.13--java第六章类和对象章总结.doc

    ### Java第六章类和对象知识点总结 #### 一、面向对象的基本概念 1. **面向对象的三大特征**: - **封装**:封装是指隐藏对象的属性和实现细节,只对外提供公共访问方式。 - **继承**:继承使得一个类(子类)...

    Java面向对象总结

    继承是面向对象编程中的一个重要概念,它允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现了代码的复用。 1. **子类继承父类就拥有了父类的属性和方法**:当一个类(子类)继承另一个类(父类)时,...

    易语言取类对象指针

    总结来说,易语言中的“取类对象指针”涉及到了面向对象编程的核心概念,包括类的实例化、对象指针的获取以及对象方法的调用。理解和掌握这些知识对于编写高质量的易语言程序至关重要。通过实际的源码学习和测试,...

    3类与对象基础实验(一)

    2. **实验步骤**:详述实现类和对象的过程,包括类的定义、对象的创建及方法的调用。 3. **遇到的问题与解决方案**:记录在编程过程中遇到的困难,以及如何解决这些问题。 4. **实验结果**:展示程序运行的结果,...

    JAVA面向对象基础总结笔记

    ### JAVA面向对象基础总结 #### 一、面向对象的基本概念 面向对象编程(Object-Oriented Programming, OOP)是一种程序设计范式,它将数据和处理这些数据的方法组织在一起,形成一个整体——对象(Object)。Java...

Global site tag (gtag.js) - Google Analytics