回合制对战游戏第二篇

一.  知识点:

继承

  1. 需要使用继承的原因:一是提高代码的重用性;节约开发程序的时间,二是提高程序的扩张性。完善或新增内容。
  2. Java继承的语法格式:
  • java继承的关键字:extends;
  • 格式是:Public class 类名(子类、派生类、超类) extends类名(父类、基类){}
  • 需要使用继承的情况:包含关系:学生包含大学生、初中生…
  1. 子类继承了父类全部的内容,子类继承到了父类所有的属性和方法。
  •     注意点:访问修饰符的使用范围
访问修饰符  同类中    同包中  不同包中 不同包但是有继承关系的子类中
  Private 可以   不可以  不可以    不可以
默认的 可以    可以   不可以     不可以
Protected   可以         可以    不可以  可以
Public   可以    可以   可以  可以

 

 

 

 

 

 

  • 在子类中同样可以定义父类中没有的属性和方法。

方法重写

  • 当父类中存在某一个方法,但是子类也有这个方法,但是方法的具体事项不同时使用方法重写。
  • 例如:父类有一个看书学习的方法,子类也有一个看书学习的方法,但是两者不一致。这时就要用到方法重写。

重写的条件:

  1. 必须存在继承关系。
  2. 子类再重写父类方法时,子类方法的访问修饰符要比父类方法的访问修饰符范围大。
  3. 子类在重写父类方法时,子类的返回值类型,方法名,参数都要和父类方法的完全一致。
  4. 子类在重写父类方法时,子类方法中的代码必须要和父类的代码不同。
  5. Private访问修饰符的方法不能重写;final修饰的方法不能重写。

调用重写的方法:

  • new关键字后的类名是谁,那么就优先调用谁的方法
  • 如果类名是子类的,那么会优先调用子类的方法,如果子类没有这个方法,才会调用父类的方法。

自动转型:

  • java中所说的自动转型,在平常我们用的很多,但也常常容易被忽略;自动转型也就是在两个存在继承关系的类,
  • 自动转型的格式:
  • 父类名 对象名 = new 子类构造方法(参数值,...);
    • 格式二:
    • public void method(父类名 参数名){}

子类名 对象名a = new 子类构造方法(参数值,...); 父类名 对象名b = new 子类构造方法(参数值,...);
method(对象名a);
method(对象名b);

  • 老实说对于自动转型还并不是太懂,这需要之后在使用中继续理解。

 二.任务:

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

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

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

 

思路:

  1. 奥特曼打一次小怪兽,小怪兽的血量减1;  小怪兽打一次奥特曼,奥特曼的血量同样减1;
  2. 在主函数中利用for 和if循环实现攻击;
  3. 先是for循环和if判断实现奥特曼A和小怪兽A进行PK,奇数时,小怪兽打奥特曼,偶数时,奥特曼打小怪兽。再用if语句来判断实现当奥特曼A胜利时,奥特曼A和奥特曼B进行PK,或者小怪兽A胜利时,小怪兽A和小怪兽B进行PK。( 当小怪兽A的血量为零时,则奥特曼A和奥特曼B进行PK,否则小怪兽A和小怪兽B进行PK。)
  4. 奥特曼的类:hero和小怪兽的类:Monster,这两个类下继续建立hero2和monster2 这俩个子类。

代码:

Monster(父类)函数:

public class Monster {

    public int bloodValue;

    public String name;

    public void fight(hero her){

        her.bloodValue--;

         System.out.println(name+"正在和"+her.name+"战斗, "+her.name+"的剩余的血量是"+ her.bloodValue);

         if(her.bloodValue<=0){

                 System.out.println(name+"赢了");

         }                

    }

}

Monster2(子类)函数:

 public class monster2 extends Monster {

     public void fight2(Monster mon2) {

     mon2.bloodValue--;

     System.out.println(name + "正在和" + mon2.name + "战斗," + mon2.name + "的剩余的血量是" + mon2.bloodValue);

     if (mon2.bloodValue <= 0) {

        System.out.println(name + "赢了");

        }

   }

 

}

 

 

注意点!:

1. 注意分开写循环,避免逻辑错误;

2. 用Break跳出循环,避免出现死循环;

3. 学会用while循环,进行判断,简化程序。

4.因为小怪兽和奥特曼的特征和行为是一样的所以可以创建一个父类。注意类的创建,有益于简化程序。类是根据生活中对象的特征以及行为(功能),按照程序中类的固定格式进行的抽象定义。当对象的特征以及行为(功能)相同时,他们就可以属于一个类。

 

原文地址:https://www.cnblogs.com/hesi/p/5517696.html