创建项目
建五个类
代码如下:
package 变形金刚;
/***
* 编写接口把类中的call更改为interface
*
*/
public interface Weapon { //开始定义接口
//定义三个常量
int A1=565;
int A2=4545;
int A3=2456;
void kill();//公开的抽象方法
String getName(); //获取接口所接的方法名
int getA(); //获取子类,类别;
}
package 变形金刚;
public class Transformer {
/**
* 使用武器的接口
*/
private Weapon w;//定义接口变量为私有的W
public void setWeapon(Weapon w){
this.w=w;
}
public void attact(){ //定义攻击
System.out.println("变形金刚开始");
if(w==null){ //如果W为空没有接入武器则执行“用拳打”
System.out.println("用拳打");
return;
}
String wq=""; //武器类别字符串
switch(w.getA()){
case Weapon.A1:wq="冷兵器";break;
case Weapon.A2:wq="热兵器";break;
case Weapon.A3:wq="核武器";break;
}
System.out.println("使用"+wq+w.getName()+"进攻");
w.kill(); //调用抽象方法KILL方法
}
}
package 变形金刚;
/**
*
* 定义剑的属性
*
*/
public class Sword implements Weapon {
@Override
public void kill() {
System.out.println("拿起");
}
@Override
public String getName() {
return "大宝剑";
}
@Override
public int getA() {
return Weapon.A3;
}
}
package 变形金刚;
/**
*
* 定义狼牙棒武器的属性;
*
*/
public class Lyb implements Weapon {
@Override
public void kill() {
System.out.println("抡起");
}
@Override
public String getName() {
return "狼牙棒";
}
@Override
public int getA() {
return Weapon.A2;
}
}
package 变形金刚;
/**
*
* 定义AK47。把public class AK47 后面加上继承implements Weapon
*
*/
public class AK47 implements Weapon{
@Override
public void kill() {
System.out.println("玩枪");
}
@Override
public String getName() {
return "AK-47";
}
@Override
public int getA() {
return Weapon.A1;
}
}
package 变形金刚;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//创建所有对像
Transformer t = new Transformer(); //与类Transformer对接
Sword s = new Sword(); //
AK47 a = new AK47(); //
Lyb l=new Lyb();
//取得了武器,接下来需要进攻方式,调用Transformer中的进攻方法
t.attact();
while(true){
double d=Math.random(); //d随机产生一个随机值,方便判断确定随机调用那种武器。0-1之间的小数
if(d<0.333){
t.setWeapon(s); //调用武器剑
}else if(d<0.666){
t.setWeapon(a); //调用AK47
}else{
t.setWeapon(l); //调用狼牙棒
}
t.attact();//让变形金刚进攻
//按回车继续
new Scanner(System.in).nextLine();
}
}
}