当前位置:首页 >  开发者 >  多态、抽象类、接口练习:愤怒的小鸟

多态、抽象类、接口练习:愤怒的小鸟

需求说明:模拟实现愤怒的小鸟,定义鸟叫的接口,定义"嗷嗷叫",“喳喳叫"两种实现类定义抽象类,“鸟”,将接口定义为鸟的属性,并定义两个子类,“炸弹鸟”,“分裂鸟”定义测试类,测试"炸弹鸟”,和"分裂鸟"叫和飞的行为1.定义一个接

需求说明:

  • 模拟实现愤怒的小鸟,定义鸟叫的接口,定义"嗷嗷叫",“喳喳叫"两种实现类
  • 定义抽象类,“鸟”,将接口定义为鸟的属性,并定义两个子类,“炸弹鸟”,“分裂鸟”
  • 定义测试类,测试"炸弹鸟”,和"分裂鸟" 叫 和 飞 的行为

1.定义一个接口 鸟叫的接口

package com.chen.pojo.DuoTai1;

public interface Shout {
    public void shout();
}

 2.定义嗷嗷叫的实现类

public class AoShout implements Shout{
    String name;

    public AoShout(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void shout() {
        System.out.println(name+"嗷嗷叫,实现Shout接口");
    }

}


3.定义喳喳叫的实现类

public class ZhaShout implements Shout{
    String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public ZhaShout(String name) {
        this.name = name;
    }

    @Override
    public void shout() {
        System.out.println(name+"喳喳叫,实现Shout接口");
    }
}

4.定义不会叫的实现类

public class NoShout implements Shout{
    String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public NoShout(String name) {
        this.name = name;
    }

    @Override
    public void shout() {
        System.out.println(name+"不叫,实现Shout接口");
    }
}


5.定义一个抽象类 鸟

public abstract class Brid {
    String name;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    private Shout shout;
    public Shout getShout() {
        return shout;
    }
    public void setShout(Shout shout) {
        this.shout = shout;
    }
    public void fly(){
        System.out.println(name+"在Brid抽象父类中飞。。。");
    }
    public void shout1(){
        shout.shout();
    }
    public abstract void hit();
}

6.定义鸟的子类,分裂鸟

public class LieBrid extends Brid{
    @Override
    public void hit() {
        System.out.println("在LieBrid中扔蛋攻击》》》");
    }
}


7.定义鸟的子类,炸弹鸟

public class BoomBrid extends Brid{
    @Override
    public void hit() {
        System.out.println("在BoomBrid中扔蛋攻击》》》");
    }
}

8.定义鸟的子类,肥胖鸟

public class FatBrid extends Brid{
    @Override
    public void hit() {
        System.out.println("在FatBrid中扔蛋攻击》》》");
    }
}

9.定义一个测试类

package PolymorphismAngryBird;
public class BridTest {
    public static void main(String[] args) {
        Brid brid = null;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你想实例化以下哪种鸟:");
        System.out.println("1:肥胖鸟");
        System.out.println("2:分裂鸟");
        System.out.println("3:爆炸鸟");
        int chiose = sc.nextInt();
        switch (chiose){
            case 1:
                brid = new FatBrid();
                System.out.println("肥胖鸟实例化成功");
                System.out.println("请给小鸟取个名字:");
                brid.setName( sc.next());
                brid.hit();
                brid.fly();
                brid.setShout(new NoShout(brid.name));
                brid.shout1();
                break;
            case 2:
                brid = new LieBrid();
                System.out.println("分裂鸟实例化成功");
                System.out.println("请给小鸟取个名字:");
                brid.setName( sc.next());
                brid.hit();
                brid.fly();
                brid.setShout(new ZhaShout(brid.name));
                brid.shout1();
                break;
            case 3:
                brid = new BoomBrid();
                System.out.println("爆炸鸟实例化成功");
                System.out.println("请给小鸟取个名字:");
                brid.setName( sc.next());
                brid.hit();
                brid.fly();
                brid.setShout(new AoShout(brid.name));
                brid.shout1();
                break;
        }
    }
}


10.输出的结果

请输入你想实例化以下哪种鸟:
1:肥胖鸟
2:分裂鸟
3:爆炸鸟
1
肥胖鸟实例化成功
请给小鸟取个名字:
小胖
在FatBrid中扔蛋攻击》》》
小胖在Brid抽象父类中飞。。。
小胖不叫,实现Shout接口

Process finished with exit code 0

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,
如果涉及侵权请联系站长邮箱:support@yingtwo.com 进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:none

最近更新

LinuxCentOS7.x离线安装PostgreSQL操作手册
LinuxCentOS7.x离线安装PostgreSQL操作手册

一、准备环节rpm-qa|greppostgr...

h3c路由器怎么设置
h3c路由器怎么设置

h3c路由器设置方法:工具/原料:华为Mate...

南航里程有什么用处?
南航里程有什么用处?

每一次旅客与南航同行,只要在购票或者办理乘机手...

陈睿求变,B站依旧艰难
陈睿求变,B站依旧艰难

雷达财经鸿途出品 文|莫恩盟 编|深海在6月2...

超级女英雄哪个厉害
超级女英雄哪个厉害

漫威中有数不清的超级英雄,而在我们讨论最强大的...

台电平板屏幕多少钱
台电平板屏幕多少钱

尊敬的台电用户:您好,X80HD的外屏是120...

嘉实多和昆仑哪个好
嘉实多和昆仑哪个好

你好!嘉实多机油是业界最好的,比昆仑机油贵很多...

68.C++中的const
68.C++中的const

编写程序过程中,我们有时不希望改变某个变量的值...

封神榜哪个版本游戏
封神榜哪个版本游戏

PC上的荡神志、刀剑封魔录、封神榜之英雄无敌P...