- 使用抽象类实现这个功能,定义一个Bird抽象类,包含1个show抽象方法
- 定义5种小鸟,继承Bird抽象类,重写show抽象方法
- 定义三个接口,BirdShot,BirdFly,BirdAttack。
- 不同小鸟分别实现不同接口
- 定义一个Host类,使用父类作为方法的返回值。
类名
| 方法 | 接口
|
---|
Bird
| show抽象
| no
|
SplitBird
| show
| BirdAttack
|
RcokerBird
| show
| BirdAttack
|
RedBird
| show
| BirdAttack,BirdShot
|
BombBird
| show
| BirdAttack,BirdShot
|
FatBird
| show
| BirdAttack,BirdShot
|
Bird类
public abstract class Bird {
public abstract void show();
}
BirdShot,BirdFly,BirdAttack接口
public interface BirdAttack {
void attack();
}
public interface BirdFly {
void fly();
}
public interface BirdShot {
void shot();
}
/**
* 分裂鸟
*/
public class SplitBird extends Bird implements BirdAttack {
@Override
public void show() {
this.attack();
}
@Override
public void attack() {
System.out.println("分裂攻击");
}
}
/**
* 火箭鸟
*/
public class RcokerBird extends Bird implements BirdAttack {
@Override
public void show() {
this.attack();
}
@Override
public void attack() {
System.out.println("加速冲撞");
}
}
//红色鸟
public class RedBird extends Bird implements BirdAttack,BirdShot {
@Override
public void show() {
this.attack();
this.shot();
}
@Override
public void attack() {
System.out.println("普通攻击");
}
@Override
public void shot() {
System.out.println("喳喳叫");
}
}
//爆炸鸟
public class BombBird extends Bird implements BirdAttack,BirdShot {
@Override
public void show() {
this.attack();
this.shot();
}
@Override
public void attack() {
System.out.println("爆炸攻击");
}
@Override
public void shot() {
System.out.println("喳喳叫");
}
}
//主人类
public class Host {
public Bird select(int type){
Bird bird;
if(type==1){
bird=new SplitBird();
}else if(type==2){
bird=new RcokerBird();
}else if(type==3){
bird=new RedBird();
}else if(type==4){
bird=new BombBird();
}else {
bird=new FatBird();
}
return bird;
}
}
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Host host=new Host();
Bird bird;
System.out.println("*************欢迎来到愤怒的小鸟**************");
System.out.println("1、分裂鸟 2、火箭鸟 3、红色鸟 4、爆炸鸟 5、胖子鸟");
System.out.println("请选择你的角色:");
int num=sc.nextInt();
bird=host.select(num);
bird.show();
}
}
*************欢迎来到愤怒的小鸟**************
1、分裂鸟 2、火箭鸟 3、红色鸟 4、爆炸鸟 5、胖子鸟
请选择你的角色:
5
扔弹攻击
不叫