美国队长java_Java开发日记——灭霸来了

在第一节课我们模拟了钢铁侠与美队互掐的过程,随着复联3 的上映,戴着无限手套的灭霸啜啜啜上场了,在宇宙英雄们喋血沙场之后,我们得面对一个残酷的问题——该如何打败灭霸,出任CEO,迎娶白富美,走上人生巅峰…….

不,,,,应该是如何维护宇宙的和平呢?

当然是依靠我们代码的力量!

在正式上场之前,我们先来模拟一下灭霸与我方的战斗(否则连一个响指都接不住,岂不是很尴尬)

嗯,开始愉快的创建对象,创建方法体,开始调用方法,开始 STOP

咦?灭霸只是攻击力强了一些,如果我们改一下其他英雄的战斗方法,直接copy岂不是不用上述N多步。

打开Goolge搜索一下,没错,这种方法叫做 继承

1.继承

1.1继承意味着派生类中无须重新定义在父类中已经定义的属性和行为,而是自动地、隐含地拥有其父类的全部属性与行为。继承机制允许和鼓励类的重用,派生类既具有自己新定义的属性和行为,又具有继承下来的属性和行为。

1.2关键字:extends

1.3格式:public class 子类名 extends 父类名{ }

1.4子类继承父类能继承哪些内容?

子类拥有父类所有的属性和方法。但是由于访问权限,部分属性和方法不能直接使用。

这里的访问权限就是关键字public,除了public还有protected,缺省,和private。public权限最高可以在所有情况下使用,而权限最低的private只能在当前类中使用。当继承后报错时,就要考虑一下是否是父类和子类的权限差别了。

1.5方法的重写

若是父类的方法无法满足子类的需求时,比如:同样是烹饪,煎牛排和黄焖牛肉所需的火候,时间,温度,作料都不一样,这时我们就要考虑方法的重写了。

在重写中有两点要求:

1.5.1.必须是继承关系

1.5.2方法的声明必须一致,包括方法的访问权限,方法名,返回值类型等等

2. 灭霸来了

掌握了继承和重写,灭霸也敲着响指来了。

练习:

钢铁侠 和 美国对长, 灭霸

钢铁侠 和 美国队长PK,采用回合制,每次攻击让对方的血量减少攻击方的攻击值,直到某一方的血量小于等于0结束,

胜利的一方,继续和灭霸PK,灭霸每次攻击让对方的血量减少灭霸的两倍攻击值,重复,直到某一方的血量小于等于0结束,输出胜利方。

小伙伴试着联系一下,参考代码如下:

package Extend;

public class Captain extends SuperMan{

public static void main(String[] args){

//创建美队的对象,对属性赋值

Captain cap=new Captain();

cap.name="美国队长";

cap.CE=16;

cap.HP=150;

//创建钢铁侠的对象,对属性赋值

Iron ir=new Iron();

ir.name="钢铁侠";

ir.CE=20;

ir.HP=100;

while(cap.HP>0||ir.HP>0){

cap.fight(ir);

ir.fight(cap);

// 判断对方是否死了

if (ir.HP <= 0) {

// 击败对方

System.out.println(ir.name + "已经死亡," + cap.name + "获胜,请开始下局比赛");

break;

}

if (cap.HP <= 0) {

// 击败对方

System.out.println(cap.name + "已经死亡," + ir.name + "获胜,请开始下局比赛");

break;

}

}

//创建灭霸的对象,对属性赋值

Thanos tos=new Thanos();

tos.name="灭霸";

tos.CE=17;

tos.HP=80;

if(ir.HP>0)

{

System.out.println("/n开始第二局比赛/n"+ir.name+"PK"+tos.name);

ir.HP=100;

while(ir.HP>0||tos.HP>0){

ir.fight(tos);

// 判断对方是否死了

if (tos.HP <= 0) {

// 击败对方

System.out.println(tos.name + "已经死亡," + ir.name + "获胜,请开始下局比赛");

break;

}

tos.fight(ir);

if (ir.HP <= 0) {

// 击败对方

System.out.println(ir.name + "已经死亡," + tos.name + "获胜,请开始下局比赛");

break;

}

}

}

if(cap.HP>0)

{

System.out.println("\n"+"开始第二局比赛:"+cap.name+"PK"+"\n"+tos.name);

cap.HP=150;

while(cap.HP>0||tos.HP>0){

cap.fight(tos);

// 判断对方是否死了

if (tos.HP <= 0) {

// 击败对方

System.out.println(tos.name + "已经死亡," + cap.name + "获胜,请开始下局比赛");

break;

}

if (cap.HP <= 0) {

// 击败对方

System.out.println(cap.name + "已经死亡," + tos.name + "获胜,请开始下局比赛");

break;

}

tos.fight(cap);

}

}

}

}

继承:

package Extend;

public class Iron extends SuperMan{

}

方法:

package Extend;

public class SuperMan {

// 姓名,攻击值,血量属性

public String name;

public int CE;

public int HP;

// 战斗方法

public void fight(SuperMan sup) {

// 让一号,二号血量减少对方攻击值

sup.HP = sup.HP - CE;

// 输出 一号被攻击了,一号血量减少多少

System.out.println(sup.name + "被攻击,血量减少" + CE + ".血量还剩:" + sup.HP);

}

}

重写:

package Extend;

public class SuperMan {

// 姓名,攻击值,血量属性

public String name;

public int CE;

public int HP;

// 战斗方法

public void fight(SuperMan sup) {

// 让一号,二号血量减少对方攻击值

sup.HP = sup.HP - CE;

// 输出 一号被攻击了,一号血量减少多少

System.out.println(sup.name + "被攻击,血量减少" + CE + ".血量还剩:" + sup.HP);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值