第三次总结(构造方法及方法重载)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 第三次总结(构造方法及方法重载)

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

 2013/7/17 21:14:45  云十四月  程序员俱乐部  我要评论(0)
  • 摘要:第三次总结概念:类的组成:1.属性;2.方法:1)普通方法2)构造方法构造方法:public类名(数据类型参数名...){代码...}在没写构造方法的类中,java会默认生成一个无参的构造方法。若自己定义构造方法,则默认的构造方法会被覆盖。方法重载:同名的方法,根据参数的个数、类型、顺序来加以区分。实例化对象:类名对象名=new类名(参数值...);等号左边的对象名存在内存的栈中,该对象的属性和方法则在堆中开辟空间存储。栈堆————————————对象名属性、方法(首地址123)123引用传递
  • 标签:总结 方法 构造 重载

class="p0">第三次总结

概念:

类的组成:

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-->
发表评论
用户名: 匿名