一、构造器方法
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++中用来描述一类对象的共同特征和行为的概念。它是一个抽象数据类型,包含了数据成员和成员函数。 - **成员函数**: 定义在类中的函数,用于实现类的行为。 - **数据成员**: 定义在类中的变量,用于...
总结,类对象和类指针在不同场景下各有优势。类对象更适合于轻量级对象和效率要求高的场合,而类指针则适用于需要动态绑定和管理大量对象的情况。理解并熟练运用这两种方式,能够帮助我们更好地设计和实现面向对象的...
本次实验的目的是深入理解和掌握Java编程语言中的类与对象的概念,通过设计和实现一系列几何图形类,包括点、直线、三角形、矩形、正方形、圆形和椭圆,来实践面向对象的设计方法。实验要求学生不仅能够创建数据域和...
总结一下,Java中的类和对象是构建程序的基本单元,而抽象类和接口提供了代码重用和多态性的机制。对于初学者来说,理解和熟练掌握这些概念是掌握Java编程的基础。通过不断的练习和实践,可以更好地运用这些知识来...
在`main()`函数中,创建了两个`score`对象`stu1`和`stu2`,每个对象都有自己的构造函数,用于初始化`english_score`。然后,通过`printscore()`函数输出它们的分数。实验步骤详细描述了如何使用调试器观察类的构造...
在Java编程语言中,类是面向对象编程的基础,它用于封装数据和操作这些数据的方法。在给定的实验中,有两个主要的类被创建:`complex1` 和 `Complex`,它们都用来表示复数,并提供了复数的加法和减法运算。 1. **...
总结来说,Java的类与对象是实现面向对象编程的基础,它们帮助我们构建可重用、可扩展的代码结构。理解并熟练掌握这些概念对于成为一个合格的Java开发者至关重要。通过阅读“浅谈Java的类与对象”这篇文档,你将能更...
2. 类和对象(Class and Object): 类是对象的蓝图,可以理解为一个模板,通过这个模板可以创建出具体的实例对象。在Python中,使用`class`关键字定义一个类。例如,`MyFirstTestClass`就是一个类。类可以有属性和...
JSP 内置对象 Session 总结 Session 对象是一种 JSP 内置对象,用于管理客户端与服务器端之间的会话期。下面是 Session 对象的详细介绍。 什么是 Session Session 对象是一个 JSP 内置对象,它在第一个 JSP 页面...
在Java编程语言中,类和对象是核心概念,它们构成了面向对象编程的基础。本章将深入探讨这两个概念,以及如何在实际编程中运用它们。源代码的提供将帮助我们更直观地理解这些理论知识。 首先,我们需要理解什么是类...
- 如果子类覆盖了父类的方法,那么把子类对象当作父类对象来看时,调用该方法实际上是调用了子类中覆盖的方法。 - **示例代码**: ```java public class Person { public void sayHello() { System.out....
### Java第六章类和对象知识点总结 #### 一、面向对象的基本概念 1. **面向对象的三大特征**: - **封装**:封装是指隐藏对象的属性和实现细节,只对外提供公共访问方式。 - **继承**:继承使得一个类(子类)...
继承是面向对象编程中的一个重要概念,它允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现了代码的复用。 1. **子类继承父类就拥有了父类的属性和方法**:当一个类(子类)继承另一个类(父类)时,...
总结来说,易语言中的“取类对象指针”涉及到了面向对象编程的核心概念,包括类的实例化、对象指针的获取以及对象方法的调用。理解和掌握这些知识对于编写高质量的易语言程序至关重要。通过实际的源码学习和测试,...
2. **实验步骤**:详述实现类和对象的过程,包括类的定义、对象的创建及方法的调用。 3. **遇到的问题与解决方案**:记录在编程过程中遇到的困难,以及如何解决这些问题。 4. **实验结果**:展示程序运行的结果,...
### JAVA面向对象基础总结 #### 一、面向对象的基本概念 面向对象编程(Object-Oriented Programming, OOP)是一种程序设计范式,它将数据和处理这些数据的方法组织在一起,形成一个整体——对象(Object)。Java...