一、构造(器)方法
方法分为两类,普通方法和构造器方法。
构造方法的格式:
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+" 被击败了。"); }
相关推荐
### Java中的类和对象总结 #### 一、类与对象的概念 在面向对象编程中,类(Class)和对象(Object)是两个核心概念。类是对象的抽象模板,它定义了对象的数据结构(即属性)和行为(即方法)。而对象则是类的具体...
总结,类和对象是构建复杂软件系统的基石。熟练掌握它们的概念、使用方式以及相关特性,对于理解和编写高质量的面向对象程序至关重要。通过不断的实践和学习,我们可以逐步提升在OOP领域的专业技能。
在编程领域,面向对象编程(Object-Oriented Programming, OOP)是一种常见的编程范式,其中类和对象是核心概念。本篇文章将深入探讨类与对象以及构造方法的相关知识点。 首先,类是对象的蓝图,它定义了一组特性和...
总结,类对象和类指针在不同场景下各有优势。类对象更适合于轻量级对象和效率要求高的场合,而类指针则适用于需要动态绑定和管理大量对象的情况。理解并熟练运用这两种方式,能够帮助我们更好地设计和实现面向对象的...
- **类定义**: C++中用来描述一类对象的共同特征和行为的概念。它是一个抽象数据类型,包含了数据成员和成员函数。 - **成员函数**: 定义在类中的函数,用于实现类的行为。 - **数据成员**: 定义在类中的变量,用于...
总结一下,C++的类和对象是实现面向对象编程的基础。类定义了对象的结构和行为,而对象是类的实例,拥有类定义的属性和方法。理解并熟练掌握类和对象的使用,对于任何C++程序员来说都是至关重要的。通过阅读《C++类...
本次实验的目的是深入理解和掌握Java编程语言中的类与对象的概念,通过设计和实现一系列几何图形类,包括点、直线、三角形、矩形、正方形、圆形和椭圆,来实践面向对象的设计方法。实验要求学生不仅能够创建数据域和...
类和对象的基本概念和用法 类和对象是面向对象编程(Object-Oriented Programming,OOP)的基础概念。...总结:在类作用域里面,不管什么属性的成员都能访问,在类外面,只能访问公有成员,不能访问私有和保护成员。
在`main()`函数中,创建了两个`score`对象`stu1`和`stu2`,每个对象都有自己的构造函数,用于初始化`english_score`。然后,通过`printscore()`函数输出它们的分数。实验步骤详细描述了如何使用调试器观察类的构造...
本文将深入探讨C#2005中面向对象编程的基石——类和对象,通过解析给定文件的信息,提炼并扩展相关知识点。 ### 类的概念 类在面向对象编程中扮演着中心角色,它不仅封装了数据,还封装了对这些数据进行操作的方法...
在这篇文章中,我们将总结了使用类的对象还是指针的主要区别和使用场景,希望能够帮助有疑问的朋友更好地理解和应用。 首先,我们需要了解类的对象和指针的存储空间上的区别。使用new关键字创建的对象存储在堆上,...
在C#中,创建类意味着定义了一组属性和方法,这些属性和方法描述了该类的对象将会拥有什么数据和可以执行什么行为。在面向对象的程序设计中,类是对现实世界中具有相似性质的对象的抽象和封装。 在上机实验中,学生...
在Java编程语言中,类是面向对象编程的基础,它用于封装数据和操作这些数据的方法。在给定的实验中,有两个主要的类被创建:`complex1` 和 `Complex`,它们都用来表示复数,并提供了复数的加法和减法运算。 1. **...
总结来说,类和对象是面向对象编程的核心,它们定义了软件组件的结构和行为。通过合理地设计和实现类与对象,我们可以构建出复杂、模块化的软件系统。在开发过程中,借助源码管理和开发工具,我们可以更高效地实现和...
### Java面向对象总结 #### 一、继承 继承是面向对象编程中的一个重要概念,它允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现了代码的复用。 1. **子类继承父类就拥有了父类的属性和方法**:当一...
总结来说,Java的类与对象是实现面向对象编程的基础,它们帮助我们构建可重用、可扩展的代码结构。理解并熟练掌握这些概念对于成为一个合格的Java开发者至关重要。通过阅读“浅谈Java的类与对象”这篇文档,你将能更...
在Java编程语言中,类和对象是核心概念,它们构成了面向对象编程的基础。本章将深入探讨这两个概念,以及如何在实际编程中运用它们。源代码的提供将帮助我们更直观地理解这些理论知识。 首先,我们需要理解什么是类...
JSP 内置对象 Session 总结 Session 对象是一种 JSP 内置对象,用于管理客户端与服务器端之间的会话期。下面是 Session 对象的详细介绍。 什么是 Session Session 对象是一个 JSP 内置对象,它在第一个 JSP 页面...