300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > JAVA继承:奥特曼打小怪兽

JAVA继承:奥特曼打小怪兽

时间:2018-07-18 01:28:03

相关推荐

JAVA继承:奥特曼打小怪兽

一、继承的基础知识:

1.类的继承的作用:

1)提高代码的重用性。

2)提高程序的扩展性。

简单来说,就是减少代码长度,减少工作量,工程量较小的时候,体现不出继承的优点,但是如果工程量很大的时候,比如,我们要写一个打怪升级的游戏的时候,游戏中存在着很多不同血量,不同技能,不同等级的怪,但是他们都有着一些共同特性,这时,如果每一个怪我们都要单独写一段代码的话,那么工作量就很复杂,但是有了继承,我们只需在他们公共属性上面,对每个不同的怪进行简单的特殊属性增加即可。

2.类的继承的格式:

Java中类继承类的关键字:extends

格式:

public class 类名(子类、派生类、超类) extends 类名(父类、基类) {

}

注意:Java中类的继承是单继承(一个子类只能拥有一个父类,所以 extends 只能继承一个类。)。

3.子类能继承父类的哪些内容?

继承和访问修饰符是没有关系的;

子类继承父类后,子类能继承到父类所有的属性和所有的普通方法(不能继承构造方法)。

访问修饰符是用来限制属性和方法的使用范围:

访问修饰符 同类中 同包不同类中 不同包中 不同包但是有继承关系的子类中

private 可以 不可以 不可以 不可以

默认的 可以 可以不可以 不可以

protected可以 可以 不可以 可以

public 可以 可以可以 可以

关于子类和父类,在main中实现的时候,其实是有优先级的。优先子类内容进行运算、输出等。

而且子类中可以定义父类中没有定义过的属性和方法,这就是一开始举例中,对不同怪进行属性值的修改。

4.方法重写:

1)什么情况下需要使用方法重写?

子类和父类都有同一个方法,但是具体实现又不同时就需要使用方法重写来实现。

同样拿我们的怪来举例。有的怪用刀,有的怪用枪,有的怪用法杖,对不同怪,我们都需要对父类中的原式怪模型进行方法重写,实现不同怪的不同攻击方式。

2)方法重写的条件

1.必须要存在继承关系;

2.子类在重写方法时,子类方法的访问修饰符必须要大于或者等于父类方法的访问修饰符;(这里的大于等于比较级,按上面提到的,private<默认的(int,double等)<protected<public)。

3.子类在重写方法时,子类方法的返回值数据类型,方法名,参数都必须要和父类的完全一致;

3)如何调用重写后的方法

根据new关键字后的类名来决定,如果类名是有子类的,则优先调用子类的方法,如果子类没有才会调用父类的方法。

4)有些方法是不能重写的?

private修饰符的方法不能重写,你定义的是新方法。

final修饰的方法不能重写,重写就会出错。

protected和默认的在特定情况下也不能重写,你定义的是新方法。

5)重写后,优先调用子类的方法,如果想要在调用子类的方法时也能执行父类的方法,要如何处理呢?

使用super关键字,格式:super.方法名(参数值,...);

super表示的是父类的对象。

二、奥特曼打小怪兽(继承)

题目:回合制对战游戏:奥特曼A和小怪兽A进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!

如果奥特曼A胜利,则奥特曼A和奥特曼B进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!

如果小怪兽A胜利,则小怪兽A和小怪兽B进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!

这道题的核心在于写出攻击方式,明白是谁攻击谁。我们构造一个父类Man,由这个父类可以继承出奥特曼类和小怪兽类。由这两个子类,在main中出现奥特曼A、B和小怪兽A、B。下面我们写一个攻击函数attack()。既然是攻击,就要有被攻击的对象,所以我们要添加一个被攻击对象,q。

然后再完善攻击掉血。这里我们设定每受到一次攻击,血量减少1.

子类奥特曼既可以攻击小怪兽又可以攻击奥特曼:

同样的,小怪兽也既可以攻击奥特曼,又可以攻击小怪兽:

接下来,在主函数中实现功能即可。

附main完整代码:

public static void main(String[] args) {

// TODO Auto-generated method stub

Aoteman a1=new Aoteman();

a1.name="奥特曼A";

a1.blood=6;

Aoteman a2=new Aoteman();

a2.name="奥特曼B";

a2.blood=4;

Guaishou g1=new Guaishou();

g1.name="小怪兽A";

g1.blood=2;

Guaishou g2=new Guaishou();

g2.name="小怪兽B";

g2.blood=1;

do{

a1.attackg(g1);

g1.attacka(a1);

}while(a1.blood!=0&&g1.blood!=0);

if(a1.blood==0){

System.out.println("小怪兽A胜利!");

g1.blood=2;

do{

g1.attackg(g2);

g2.attackg(g1);

}while(g2.blood!=0&&g1.blood!=0);

if(g1.blood==0){

System.out.println("小怪兽B胜利!");

}

else{

System.out.println("小怪兽A胜利!");

}

}

else{

System.out.println("奥特曼A胜利");

a1.blood=6;

do{

a1.attacka(a2);

a2.attacka(a1);

}while(a2.blood!=0&&a1.blood!=0);

if(a1.blood==0){

System.out.println("奥特曼B胜利!");

}

else{

System.out.println("奥特曼A胜利!");

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。