`
云十四月
  • 浏览: 12235 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

第三次总结(构造方法及方法重载)

阅读更多

第三次总结

概念:

类的组成:

1.属性;

2.方法:1)普通方法2)构造方法

 

构造方法:

public 类名 (数据类型 参数名...) { 代码... }

 

    在没写构造方法的类中,java会默认生成一个无参的构造方法。若自己定义构造方法,则默认的构造方法会被覆盖。

 

方法重载:

同名的方法,根据参数的个数、类型、顺序来加以区分。

 

 

实例化对象:

类名 对象名= new 类名(参数值...);

等号左边的对象名存在内存的栈中,该对象的属性和方法则在堆中开辟空间存储。

 

 

栈 堆

————————————

对象名 属性、方法(首地址123

123

 

引用传递

引用传递适用于Java的引用数据类型(对象类型、类类型)

引用数据类型包含:数组、类、接口、抽象类。)

    传递方式为传址(所在堆内存的首地址)。

 

 

值传递

值传递适用于Java的八大基本数据类型和String类型。

传递方法为传值。

 

练习

    回合制游戏:奥特曼和小怪兽要战斗,奥特曼还可以和Boss进行战斗,直到一方的血量为0的时候结束战斗,输出谁胜利了!

1.找出这个场景中的对象

2.找出每一个对象的特征和行为

3.根据类的格式和对象的特性与行为定义一个class 

4.定义主函数的类,实例化对象和调用方法

 

思路:

根据前一次的练习进行改动。

    首先新建一个Boss类,与Monster类相似。

Ultraman类中有表战斗的fight(int n ,Monster m)方法,涉及到Monster类型的一个参数。若要奥特曼还能够和Boss类型的对象战斗,则须重载该方法。方法名相同,参数类型不同的新方法fight(int n,Boss b)

在主函数类中分别调用两个fight()方法。

 

※※※※※※※※※Monster类※※※※※※※※※

 

public class Monster {

private int blood ;

public Monster(){blood=1000;}//自定无参的构造方法,覆盖默认的

public void setBlood(int de){//单次掉血

this.blood = this.blood-de;

}

public int getblood(){return blood;}

public void fight(int n,Ultraman u){

switch(n){

case 48:

 

System.out.println("小怪兽Miss..      奥特曼血槽

"+u.getblood());

break;

case 49:

u.setBlood(10);

System.out.println("小怪兽给了奥特曼一击,伤害10

!      奥特曼血槽:"+u.getblood());

break;

case 50:

u.setBlood(20);

System.out.println("小怪兽给了奥特曼一!!暴击!

!伤害20!!!      奥特曼血槽:"+u.getblood());

break;

}

}

}

 

※※※※※※※※※同理的Boss类※※※※※※※※※

 

public class Boss{

 

private int blood =5000;

public void setBlood(int de){

this.blood = this.blood-de;

}

public int getblood(){return blood;}

public void fight(int n,Ultraman u){

switch(n){

case 48:

 

System.out.println("Boss Miss..      奥特曼血槽:"+u.getblood());

break;

case 49:

u.setBlood(200);

System.out.println("Boss给了奥特曼一击,伤害100!      奥特曼血槽:"+u.getblood());

break;

case 50:

u.setBlood(400);

System.out.println("Boss给了奥特曼一!!暴击!!伤害200!!!      奥特曼血槽:"+u.getblood());

break;

}

}

}

 

 

※※※※※※※※※Ultraman类※※※※※※※※※

public class Ultraman {

public Ultraman(int blood){

this.blood=blood;

System.out.println("这只奥特曼的初始血量为:"+this.blood);

}

 

private int blood;

 

public void setBlood(int de){

this.blood = this.blood-de;

}

public int getblood(){return blood;}

 

//定义一个表示攻击动作的方法fight(),由于攻击对象为小怪兽,故一个参数为Monster类型的;另一个参数表示攻击掉血的随机值

 

public void fight(int n,Monster m){

switch(n){

case 48://此处考虑到char类型的012分别对应int类型的48,49,50

 

System.out.println("奥特曼Miss..      小怪兽血槽:"+m.getblood());

break;

case 49:

m.setBlood(100);

System.out.println("奥特曼给了小怪兽一击,伤害100!      小怪兽血槽:"+m.getblood());

break;

case 50:

m.setBlood(200);

System.out.println("奥特曼给了小怪兽一!!暴击!!伤害200!!!      小怪兽血槽:"+m.getblood());

break;

}

}

 

//重载fight函数,参数为Boss类型

public void fight(int n,Boss b){

switch(n){

case 48:

System.out.println("奥特曼Miss..      Boss血槽:"+b.getblood());

break;

case 49:

b.setBlood(50);

System.out.println("奥特曼给了Boss一击,伤害50!      Boss血槽:"+b.getblood());

break;

case 50:

b.setBlood(100);

System.out.println("奥特曼给了Boss一!!暴击!!伤害100!!!      Boss血槽:"+b.getblood());

break;

}

}

}

 

※※※※※※※※※主函数类※※※※※※※※※

 

public class Game{

public static void main(String [] args){

Ultraman jack=new Ultraman(2000);//定义一个奥特曼类型的对象jack,赋以初始血量

Monster rose=new Monster();//再定义一个怪兽类型的对象rose..

Boss bb=new Boss();//再定义一个怪兽类型的对象bb

 

String s="1012111201112111111111211111";//以一个字符串模拟随机的

格斗状态

for(int i=0;i<s.length();i++){

 

if(jack.getblood() > 0 && rose.getblood() > 0){

if((i % 2 )== 0){

jack.fight((int)s.charAt(i),rose);}

else{

rose.fight((int)s.charAt(i),jack);}

}

}

if(jack.getblood() <= 0){System.out.println("奥特曼挂了,小怪兽

胜利%>_<%");}

if(rose.getblood() <= 0){System.out.println("小怪兽挂了,奥特曼

胜利O(_)O");}

 

 

for(int i=0;i<s.length();i++){

if(jack.getblood() > 0 && bb.getblood() > 0){

if((i % 2 )== 0){

jack.fight((int)s.charAt(i),bb);}

else{

bb.fight((int)s.charAt(i),jack);}

}

}

if(jack.getblood() <= 0){System.out.println("奥特曼挂了,Boss

%>_<%");}

if(bb.getblood() <= 0){System.out.println("Boss挂了,奥特曼胜利

O(_)O");}

 

 

}

 

}

 

<!--EndFragment-->
0
0
分享到:
评论

相关推荐

    Java使用this关键字调用本类中的重载构造方法.pdf

    在类的构造方法中,`this`关键字可以用来调用同一类中的其他重载构造方法,以便于代码的复用和简化。这个特性使得开发者能够更高效地管理对象的初始化过程。 首先,我们要理解构造方法的作用。构造方法是Java类中...

    9.java学习第九章——对象的创建和使用+构造方法+方法重载——作业的形式:创建对象在JVM中的存储状态(内存图).pdf

    ### 三、方法重载 #### 1. 方法重载的定义 - 方法重载是指在一个类中可以有多个同名的方法,但这些方法的参数列表不同。 - 方法重载允许程序员以不同的方式调用同一个方法名称。 #### 2. 方法重载的例子 - 考虑...

    java 子类构造方法

    子类构造方法的第一条语句通常是调用超类(即父类)的构造方法。这是因为子类继承了父类的属性和方法,所以在初始化子类对象时,也需要确保父类的状态被正确设置。这是通过使用`super`关键字来实现的,其语法如下: ...

    12_Java面向对象_第4天(构造方法、this、super)_讲义

    构造方法重载** Java允许在一个类中定义多个构造方法,只要它们的参数列表不同,这就是构造方法的重载。重载提供了创建对象的灵活性,可以根据需要提供不同的初始化方式。 **5. 继承中的构造方法** 当一个类继承另...

    java中的继承(子类调用父类构造方法还不懂).doc

    ### Java中的继承(子类调用父类构造方法) #### 一、继承的基本概念 Java是一种支持面向对象编程的语言,其中“继承”是一项核心特性。继承允许创建一个新的类(称为子类或派生类),该类继承了现有类(称为父类...

    重载运算符,测试输入的长度能否构成一个三角形

    这里,我们可能会有一个函数或方法,它接受三个边长作为输入,然后检查是否满足任意两边之和大于第三边的三角形条件。如果满足,返回true,否则返回false。 构成三角形的条件是任意两边之和必须大于第三边。这个...

    JAVA视频 第05章:构造方法-学生类-String类

    内容包括三章:1、构造方法与匿名对象;2、实例讲解—类设计分析(学生类);3、String类。

    C#重载知识点

    总的来说,C#中的方法重载是一种强大的工具,它允许我们根据参数类型或数量来设计灵活的函数接口,提高了代码的可读性和可维护性。在学习和实践中,我们应该熟练掌握这一特性,以提升我们的编程效率和代码质量。通过...

    Java小程序--关于Date类的构造函数的重载

    对于Date类中的构造函数,使用重载的方法,可以选择3中方式输出:1.MM/XX/DDDD 2.January 7 1989 3.37 1989(前一个参数为一年中的第37天) 使用s.equal("m")比较字符串。

    实验三:Java类与对象

    `Monkey`类中有默认构造方法和带参数的构造方法,后者允许我们在创建对象时立即设置属性值。 接着,我们学习了如何创建和使用对象。在Java中,通过`new`关键字和类的构造方法来创建对象。实验中,我们创建了两个`...

    Swift学习笔记之构造器重载

    在实例化矩形时,通过传入不同的参数,我们可以选择使用不同的构造器,如代码中的注释所示,`rectc1` 和 `rectc2` 分别调用了第一个和第二个构造器,而 `rectc3` 和 `rectc4` 使用了第三个和第四个构造器。...

    java中方法的重载.doc

    在 Java 编程语言中,方法的重载(Overloading)是一种重要的概念,它允许在一个类中...在实际编程中,方法重载经常用于构造函数(以方便创建不同初始化状态的对象)和通用操作方法(如数学运算或集合操作)等场景。

    分数类中的操作符重载

    4. 除法(`/`):重载`operator/`,需要将第一个分数的分子乘以第二个分数的分母,再将第一个分数的分母乘以第二个分数的分子,最后进行约分。 5. 约分(`~`):分数类可能还提供了一个单目操作符`operator~`,用于...

    Java应用程序-习题-第5章.doc

    本文将详细解释 Java 应用程序习题第五章中的知识点,包括继承关系、方法覆盖、方法重载、构造方法、类型转换等重要概念。 1. 继承关系 在 Java 中,类 Student 继承自类 Person,这是一种继承关系。继承关系是一...

    java第三次测验

    ### Java第三次测验知识点解析 #### 一、选择题知识点解析 **1. 面向对象程序设计方法特性** - **多态性**:允许子类重写或重载父类的方法,使得不同的对象可以以不同的方式响应同一个消息。 - **静态性**:不是...

    java基础补足和thinking In Java学习.rar

    第5章总结 第五章 初始化与清理 5.1 用构造器确保初始化 1.构造器命名必须与类名相同 2.构造器也是方法,满足方法的各种特征,无参数的构造器称为默认构造器,默认构造方法或者无参构造器。在没有其他构造方法的...

    java中静态代码块与构造方法的执行顺序判断

    1. 如果构造方法中包含`this`语句,表示调用本类中的其他构造方法,此时不会执行隐式三步。 2. 如果构造方法中包含`super`语句,表示调用父类的构造方法。 3. 若构造方法中既无`this`也无`super`,则默认调用父类的...

    写一个类,名为Animal,该类有两个私有属性,name(代表动物的名字),和legs(代表动物的腿的条数);

    要求在第一个构造方法中调用第二个构造方法。该类还有两个重载的move()方法,其中一个无参,在屏幕上输出一行文字: XXX Moving!!(XXX为该动物的名字);另一个需要一个int参数n,在屏幕上输出n次 XXX Moving!!

Global site tag (gtag.js) - Google Analytics