一、构造器方法
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 类与对象 个人总结与简单的例子,类与对象1. PHP 类与对象 2. PHP 类的继承 extends 关键字 3. PHP 构造方法 __construct() 4. PHP 析构方法 __destruct() 5. PHP final 关键字 6. PHP 类的接口 interface...
1、编写一个名为“复数”的类,包含复数的实部和虚部(数据成员),以及复数之间的基本算术运算:加、减(方法成员),并要求复数加减运算,程序运行中能对给定的复数进行运算,并打印运算的结果。 2、用类来描述游戏...
类和对象的关系 对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型。 定义为 class 类名{ } 它们的关系是,对象是类的实例,类是对象的模板。
一、实验目的 1.通过对所选题目相关需求的分析,掌握需求分析的方法和过程; 2.掌握需求分析相关文档的组织规范; 3. 完成一个小型软件系统的需求分析。
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中的类的特点: 1.类中所有的方法的参数中都必须加self,并且是第一个参数 2.__init__方法用来初始化对象,也必须加self 3.用__str__方法,方法中有返回值,可以直接用print(对象引用的变量),__...
类对象的构造顺序是这样的: 1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员 2.进入构造函数后在构造函数中执行一般计算 1.类里面的任何成员变量在定义时是不能初始化的。 2.一般的数据成员可以在...
一.实验目的及要求………………...2. 对各个功能模块分析设计抽象并实现对象类,重点是各类的属性和行为,类之间的关系; 3.在类的设计上,尽量自己设计,并采用继承、多态、重载等概念; 4. 所有数据用文件存储;
第四章 面向对象的概念和 Java 实现-2 回顾 类是具有相同属性和行为的一组对象的 集合 , 对象是类的实例 封装是隐藏对象实现细节的过程,以便不让用户看到实现的细节 类可用Class 来定义,类的变量和方法可被该类的...
在ASP.NET中引入了名字空间,其中文件操作对应的... 在asp.net中,可以使用2种方法来创建一个file对象 (1)使用dim 语句来创建一个file对象 dim mikecatfile as file mikecatfile.create("c:\mikecat.txt")
(三) 类属性 和类方法 3-1 类属性 和类方法 (四)使用New函数 将对象实例化 4-1 使用New函数 将对象实例化 (五)面向对象开发的学习笔记 5-0 面向对象开发的学习笔记 5-1 对象中的$this关键字 5-2 初始化对象函数 __...
2,对象.查看(),这个命令是必须使用的,同样是方便查找对象,方法,并了解在易语言中,到底该用.读对象属性(),还是.对象型方法();。3,记住几个主要的对象:application, document, selection, table, cell, range。4,操作...
继承是这样的一个过程,即某类的对象得到另一类对象的属性。 多态指的是,一个名称,多种形态。在程序中,我们可以借此定义多个同名函数。此特 性亦可重载运算符,这样一来,同一个运算符在不同的实例下,会有不同...
文章目录面向对象设计类与对象的概念1、类与对象的本质2、面向对象设计 到 面向对象编程3、类实例化4、例如一个学校类面向对象编程1、案例2、面向对象语言和面向对象编程之间的关系3、类的属性4、类的其他一些属性5...
节点流和处理流 Java IO 的核心类 File Java IO 流对象 字节流对象InputStream OutputStream 字符流对象Reader Writer 字节流与字符流的转换新潮的 NIO 缓冲区(Buffer)通道(Channel) 示例:文件拷贝案例 BIO 和 NIO ...
1、 一个三维向量类,并定义相应的特殊方法实现两个该类对象之间的加、减运算(要求支持运算符+、-),实现该类对象与标量的乘、除运算(要求支持运算符*、/),以及向量长度的计算(要求使用属性实现)。...
4.1 Adapter(适配器)—类对象结构型 模式 92 4.2 Bridge(桥接)—对象结构型 模式 100 4.3 Composite(组成)—对象结构型 模式 107 4.4 Decorator(装饰)—对象结构型 模式 115 4.5 FACADE(外观)—对象结构型...