(1) 定义一个接口 Speakable (可说话的)。该接口有一个抽象方法 speak() 。 (2) 定义一个接口 Flyable (可飞行的)。该接口有一个抽象方法 fly() 。 (3) 定义一个抽象类 Pet, 有一个 name 成员变量。实现了 Speakable 接口,但并没有给出方法的具体实现。 (4) 定义 3 个类: Cat (猫)、 Peigeon (鸽子)、 Parrot (鹦鹉)。这 3 个类都继承自抽象类 Pet ,分别给出 speak ()方法的不同实现。并根据实际,实现 Flyable 接口。 (5) 编写一个 House 类,代表家庭,这个类有一个成员变量是 Pet 的数组 p (用来存储该家庭的所有宠物),该类有构造方法。在构造方法中通过传递一个 int 类型的参数来限定该类能拥有的最大宠物数量。并用这一大小来初始化数组 p 。 (6) House 类提供了 3 个方法: addPet(Pet pet) ,把参数 pet 加入到数组 p 中。 speakAll() 方法,可以让数组 p 中的所有宠物说话, flyAll() 方法,可以让 p 数组中的所有可飞行的宠物飞行。 (7) 编写 main 方法,测试以上代码。 给出完整程序的输出结果。