首页 > 其他分享 >多态、抽象类、接口练习:愤怒的小鸟

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

时间:2023-02-24 11:56:48浏览次数:36  
标签:定义 package void 多态 小鸟 birdScreaming PolymorphismAngryBird 抽象类 public

需求说明:

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

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

package PolymorphismAngryBird;

// 鸟叫的接口
public interface BirdScream {
    // 接口中的行为
    void birdScreaming();
}

 2.定义嗷嗷叫的实现类

package PolymorphismAngryBird;

// 嗷嗷叫,实现了,鸟叫的接口
public class AoAo implements BirdScream{

// 重写了方法
    @Override
    public void birdScreaming() {
        System.out.println("嗷嗷叫");
    }
}


3.定义喳喳叫的实现类

package PolymorphismAngryBird;

// 喳喳叫 实现了,鸟叫的方法
public class Zaza implements BirdScream{

// 重写了,方法的行为
    @Override
    public void birdScreaming() {
        System.out.println("喳喳叫");
    }
}


4.定义一个抽象类 鸟

package PolymorphismAngryBird;

public abstract class Bird implements BirdScream{

// 无参构造函数
public Bird() {}

    // 鸟飞行为
    public void fly(){
        System.out.println("飞...");
    }
}

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

package PolymorphismAngryBird;

public class SplitBird extends Bird{

    @Override
    public void birdScreaming() {
        System.out.println("喳喳叫");
    }
}


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

package PolymorphismAngryBird;

public class BoomBird extends Bird {

    public BoomBird() {
    }

    @Override
    public void fly() {
    System.out.println("炸弹鸟在飞 ...");
    }

    @Override
    public void birdScreaming() {
        System.out.println("炸弹鸟在嗷嗷叫...");
    }
}

7.定义一个测试类

package PolymorphismAngryBird;

public class Test {
public static void main(String[] args) {

    // 父类对象指向子类对象
    // 多态的写法,向上转型
    Bird boomBird = new BoomBird();
    // 调用子类的方法
    boomBird.fly();
    boomBird.birdScreaming();

    // 普通写法
    SplitBird splitBird = new SplitBird();
    splitBird.fly();
    splitBird.birdScreaming();

    }
}


8.输出的结果

炸弹鸟在飞...
炸弹鸟在嗷嗷叫...
飞...
喳喳叫

Process finished with exit code 0

 

标签:定义,package,void,多态,小鸟,birdScreaming,PolymorphismAngryBird,抽象类,public
From: https://www.cnblogs.com/curry3000/p/17150696.html

相关文章

  • 47.多态
    1.多态基本概念多态是面向对象程序设计语言中数据抽象和继承之外的第三个基本特征。多态性(polymorphism)提供接口与具体实现之间的另一层隔离,从而将”what”和......
  • 抽象类和接口
    抽象类代表一个抽象概念的类;规定整个类家族都必须具备的属性和行为。一、抽象类性质类名前加修饰符abstract;可包含常规类能包含的任何成员,包括非抽象方法;也可包含......
  • 47.多态
    1.多态基本概念多态是面向对象程序设计语言中数据抽象和继承之外的第三个基本特征。多态性(polymorphism)提供接口与具体实现之间的另一层隔离,从而将”what”和......
  • 多态
    多态:同一事物表现出不同事物的能力,即向不同对象发送同一消息,不同的对象在接收时会产生不同的行为重载实现编译时多态,虚函数实现运行时多态基类的指针指向派生类的对象,......
  • 多态
    子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。构建子类对象时......
  • 抽象类
    Q:为什么引入抽象类?A:父类方法的不确定性classAnimal{privateStringname;privateintage;publicAnimal(Stringname,intage){this.name......
  • 纯虚函数和抽象类
    纯虚函数和抽象类纯虚函数是一种特殊的虚函数,在某些情况下,基类中不能对虚函数给出有意义的实现,把它声明为纯虚函数。纯虚函数只有函数名、参数和返回值类型,没有函数体,具......
  • 抽象类和接口
    抽象类概念抽象方法:只有方法的定义,没有方法体的实现,这种方法就是抽象方法定义类抽象方法的类,就是抽象类 定义和实现抽象类和抽象方法是用abstract关......
  • golang 入门(七) 接口-多态
    所谓多态就是子类在继承了父类后,自己重新写了一个方法覆盖父类的同名方法。继续引用上文的案例,父类computer中有PowerOff方法,但是子类laptop把盖子合上也可以认为是一种Powe......
  • JAVA 抽象类
    抽象类 在java语言继承层次结构中,位于上层的类更具有通用性,甚至更加抽象,这些类封装的方法被重写的可能更大.java用关键字  abstract 格式为: [访问控制符]a......