定义一个抽象类Weapon(java),用接口来实现。
来源:互联网 发布:javascript参数判断 编辑:程序博客网 时间:2024/04/29 03:23
用接口实现:
(1)、定义一个接口IAssaultable(可攻击的),该接口有一个抽象方法attack()。
(2)、定义一个接口IMobile(可移动的),该接口有一个抽象方法move()。
(3)、定义一个抽象类Weapon,实现IAssaultable接口和IMobile接口,但并没有给出具体的实现方法。
(4)、定义3个类:Tank,Flighter,WarShip都继承自Weapon,分别用不同的方式实现Weapon类中的抽象方法。
(5)、写一个类Army,代表一支军队,这个类有一个属性是Weapon数组w(用来存储该军队所拥有的所有武器);
该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,并用这一大小来初始化数组w。
该类还提供一个方法addWeapon(Weapo wa),表示把参数wa所代表的武器加入到数组w中。
在这个类中还定义两个方法attackAll()和moveAll(),让w数组中的所有武器攻击和移动。
新建IMobile 接口:
分别建坦克,飞机,军舰 ,和军队类;坦克,飞机,军舰分别继承Weapon类;
军队类:
测试类:
(1)、定义一个接口IAssaultable(可攻击的),该接口有一个抽象方法attack()。
(2)、定义一个接口IMobile(可移动的),该接口有一个抽象方法move()。
(3)、定义一个抽象类Weapon,实现IAssaultable接口和IMobile接口,但并没有给出具体的实现方法。
(4)、定义3个类:Tank,Flighter,WarShip都继承自Weapon,分别用不同的方式实现Weapon类中的抽象方法。
(5)、写一个类Army,代表一支军队,这个类有一个属性是Weapon数组w(用来存储该军队所拥有的所有武器);
该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,并用这一大小来初始化数组w。
该类还提供一个方法addWeapon(Weapo wa),表示把参数wa所代表的武器加入到数组w中。
在这个类中还定义两个方法attackAll()和moveAll(),让w数组中的所有武器攻击和移动。
(6)、写一个主方法去测试以上程序。
=====================================================================================================
直接附代码:
新建IAssaultable接口:
package com.qikai.Day08WeaponInterFace;public interface IAssaultable {void attack();}
新建IMobile 接口:
package com.qikai.Day08WeaponInterFace;public interface IMobile {void move();}
接着建Weapon类:继承上面两个接口;
package com.qikai.Day08WeaponInterFace;//定义一个抽象类Weapon,该抽象类有两个抽象方法attack(),move()//这两个方法分别表示武器的攻击方式和移动方式。public abstract class Weapon implements IAssaultable,IMobile {public abstract void attack(); // 武器攻击方式public abstract void move(); // 武器移动方式}
分别建坦克,飞机,军舰 ,和军队类;坦克,飞机,军舰分别继承Weapon类;
package com.qikai.Day08WeaponInterFace;public class Tank extends Weapon {@Overridepublic void attack() {System.out.println("坦克!开炮!");}@Overridepublic void move() {System.out.println("坦克 撤退!");}}
package com.qikai.Day08WeaponInterFace;public class Flighter extends Weapon {@Overridepublic void attack() {System.out.println("飞机!射击!");}@Overridepublic void move() {System.out.println("飞机 撤退!");}}
package com.qikai.Day08WeaponInterFace;public class Warship extends Weapon {@Overridepublic void attack() {System.out.println("军舰!发射!");}@Overridepublic void move() {System.out.println("军舰 撤退!");}}
军队类:
package com.qikai.Day08WeaponInterFace;public class Army {private Weapon[] w;public Army() {}public Army(int num) {this.w = new Weapon[num];}// 定义 添加武器方法 public void addWeapon(Weapon wa){boolean Full=true; // 创建 boolean变量 Full 判断武器库是否满for (int i = 0; i < w.length; i++) {// 如果没满;if (w[i]==null) {w[i]=wa;Full=false; // 没满结束循环;break;}} // 如果满了,输出 武器库满了!if (Full) {System.out.println("武器库已满...");}}// 定义 所有武器攻击 方法;// 使用 数组的遍历 ,如果当前位置存放的有武器,攻击!public void attackAll() {for (int i = 0; i < w.length; i++) { if (w[i] != null) { w[i].attack(); } }}// 定义 所有 武器 移动 // 使用 数组的遍历 ,如果当前位置存放的有武器,移动!public void moveAll() {for (int i = 0; i < w.length; i++) { if (w[i] != null) { w[i].move(); } }}}
测试类:
package com.qikai.Day08WeaponInterFace;public class Test {public static void main(String[] args) {Weapon w1=new Tank();Weapon w2=new Flighter();Weapon w3=new Warship();Army army=new Army(3); // Army的构造方法 :通过输入一个数字来确定数组的长度army.addWeapon(w1);army.addWeapon(w2); // 调用 Army中的方法 给数组赋值 w1是坦克 ,w2 是飞机, w3是军舰army.addWeapon(w3);army.attackAll(); army.moveAll();army.addWeapon(w1); // 继续添加 提示 武器库 满了 ...}}
阅读全文
0 0
- 定义一个抽象类Weapon(java),用接口来实现。
- 定义一个抽象类Weapon(java)
- Java中为什么要用抽象类来实现接口
- Java回顾:用一个Demo来说明继承抽象类和实现接口的简单框架模型
- Java中接口的定义与实现接口抽象方法
- Java中接口的定义与实现接口抽象方法
- Java中接口定义及实现接口的抽象方法
- java接口和抽象类的定义
- Java中抽象类和接口定义
- java 抽象类实现接口
- java 抽象类实现接口
- java抽象类实现接口
- java 抽象类实现接口
- Java - 抽象类实现接口
- Java 抽象类和接口 一个例题
- Java(接口定义,接口实现)
- 接口中定义的方法在抽象类中实现
- 4.3抽象类abstract和接口interface定义implements实现接口中的抽象方法
- FFmpeg API 变更记录
- java代码实现分页
- phpexcel 导出报表
- 模板编译
- 03. JavaMail 发送HTML邮件
- 定义一个抽象类Weapon(java),用接口来实现。
- Promise,Ajax,fetch
- 完全卸载mysql数据库图文教程(安装mysql时,到最后一步显示未响应,解决办法)
- 04. JavaMail 查询/读取邮件
- windows系统vagrant安装
- elasticsearch联表查询2
- jsp初体验之session
- Android上玩玩Hook?
- Android selectTab