zoukankan      html  css  js  c++  java
  • Java自学第三十六天

      今天实现一个接口习题。

      题目如下

    1.定义一个canattack()接口,其中有一个attack()抽象方法

    2.定义一个canmove()接口,其中有一个move()抽象方法

    3.定义一个抽象类Weapon(),实现canattack()和canmove()两个接口,但不实现其中的抽象方法。

    4.定义三个类,Tank,Fly,Ship,都继承Weapon分别用不同的方式实现 Weapon 类中的抽象方法

    5.写一个类Army,代表一支军队,这个类有一个属性是Weapon数组w(用来存储该军队所拥有的所有武器)该类还

    提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,并用这一大小

    来初始化数组w。该类还提供一个方法addWeapon(Weapon wa),表示把参数wa所代表的武器加入到数组w中。在这

    个类中还定义两个方法attackAll()和moveAll(),让w数组中的所有武器攻击和移动

    6.定义一个主类来实现这些步骤。

    代码如下

    package hello;
    import java.util.Scanner;
    interface canattack{
    public void attack();
    }
    interface canmove{
    public void move();
    }
    abstract class Weapon implements canattack,canmove{

    }
    class Tank extends Weapon{
    public void move() {System.out.println("Tank move");}
    public void attack() {System.out.println("Tank attack");}
    }
    class Fly extends Weapon{
    public void move() {System.out.println("Fly move");}
    public void attack() {System.out.println("Fly attack");}
    }
    class Ship extends Weapon{
    public void move() {System.out.println("Ship move");}
    public void attack() {System.out.println("Ship attack");}
    }
    class Army {
    int n;
    Weapon[] w;
    public Army(int a) {w=new Weapon[a];}
    public void setn(int a) {n=a;}
    public int getn() {return n;}
    public void addWeapon(Weapon wa) {
    w[getn()]=wa;
    }
    public void allattack() {
    for(int i=0;i<getn();i++) {
    System.out.println("第"+(i+1)+"号attack!");
    w[i].attack();
    }
    }
    public void allmove() {
    for(int i=0;i<getn();i++) {
    System.out.println("第"+(i+1)+"号move!");
    w[i].move();
    }
    }
    }

    public class helloword {
    public static void main(String[] args){
    Army a=new Army(5000);
    Scanner cn=new Scanner(System.in);
    String s;
    System.out.println("输入yes代表添加Weapon");
    s=cn.next();
    int n1=0;
    a.setn(n1);
    while(s.equals("yes")) {
    System.out.println("1.Tank 2.Fly 3.Ship");
    System.out.println("请选择:");
    int t=cn.nextInt();

    if(t==1) {a.addWeapon(new Tank());}
    if(t==2) {a.addWeapon(new Fly());}
    if(t==3){a.addWeapon(new Ship());}

    n1++;
    a.setn(n1);
    s=cn.next();
    }
    a.allmove();
    a.allattack();
    cn.close();
    }
    }

      这道题涉及的知识点就多了些,在解决过程中对数组的长度忽视从而带来了问题寻找了一段时间,从这道题我学习到了要多考虑数组的长度,同时再次熟悉对接口问题的解决。

       明天继续寻找例题解答。

  • 相关阅读:
    二级菜单实现
    Python监控日志中经常访问的ip
    Python判断一个数是否为小数
    Python-读写文件
    python-字典
    Python实现屏蔽敏感词
    Python生成随机密码
    Python-列表和元组
    Jmeter命令行参数
    启动Jmeter时遇到的几种错误
  • 原文地址:https://www.cnblogs.com/ruangongwangxiansheng/p/13533924.html
Copyright © 2011-2022 走看看