interface Pet {// 定义宠物接口
  public String getName();

  public int getAge();

  public String getColor();

}
class Cat implements Pet {
  // 定义属性
  private String name;
  private int age;
  private String color;

  // 通过构造方法为属性赋值
  public Cat(String name, int age, String color) {
    super();
    this.setName(name);
    this.setAge(age);
    this.setColor(color);
  }

  // setter getter 方法
  public void setName(String name) {
    this.name = name;
  }

  public void setAge(int age) {
    this.age = age;
  }

  public void setColor(String color) {
    this.color = color;
  }

  // 实现接口中的方法
  @Override
  public int getAge() {
    // 即获取的年龄为本类的年龄
    return this.age;
  }

  @Override
  public String getColor() {
    // 获取的颜色为本类颜色
    return this.color;
  }

  @Override
  public String getName() {
    // 获取的名字为本类的名字
    return this.name;
  }

}

class Dog implements Pet{
private String name;
private int age ;
private String color;

  public Dog(String name, int age, String color) {
  super();
  this.setName(name);
  this.setAge(age);
  this.setColor(color);
}

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

  public void setAge(int age) {
    this.age = age;
  }

  public void setColor(String color) {
    this.color = color;
  }

  @Override
  public int getAge() {
    
    return this.age;
  }

  @Override
  public String getColor() {

    return this.color;
  }

  @Override
  public String getName() {
    
    return this.name ;
  }

}
class PetShop {

  private Pet[] pets;// 保存一组宠物
  private int foot;// 数组小标

  public PetShop(int len) {
    if (len > 0) {
      this.pets = new Pet[len];// 开辟数组大小
    } else {
      this.pets = new Pet[1];// 数组至少开辟一个内存空间
    }
  }

  public boolean add(Pet pet) {
    if (this.foot < this.pets.length) {// 如果下标小于数组长度
      this.pets[this.foot] = pet;// 增加宠物
      this.foot++;// 不断添加
      return true;
    } else {
      return false;
    }

  }

  public Pet[] search(String keyWords) {
    // 关键字查找,确定有多少个宠物符合标准
    Pet[] p = null;
    int count = 0;
    for (int i = 0; i < this.pets.length; i++) {
      if (this.pets[i] != null) {// 表示此位置有宠物
        if (this.pets[i].getName().indexOf(keyWords) != -1
            || this.pets[i].getColor().indexOf(keyWords) != -1) {
          count++;// 修改找到的记录数
        }
      }

    }
    p = new Pet[count];// 开辟指定的大小空间
    int f = 0;// 增加元素的位置标记
    for (int i = 0; i < this.pets.length; i++) {
      if (this.pets[i] != null) {// 表示此位置有宠物
        if (this.pets[i].getName().indexOf(keyWords) != -1
            || this.pets[i].getColor().indexOf(keyWords) != -1) {

          p[f] = this.pets[i];
          f++;// 修改找到的记录数
        }
      }

    }
    return p;

  }
}

public class PetShopDemo {

  /**
    * @param args
    */

  public static void main(String[] args) {
    // TODO Auto-generated method stub
    PetShop petShop = new PetShop(5);// 定义宠物商店有5个元素
    //添加操作
    petShop.add(new Cat("蓝猫", 20, "蓝色"));
    petShop.add(new Dog("红狗", 20, "红色"));
    petShop.add(new Dog("花狗", 20, "花色"));
    petShop.add(new Cat("蓝猫", 20, "蓝色"));
    petShop.add(new Dog("红狗", 20, "红色"));
    
    petShop.add(new Dog("花狗", 20, "花色"));//添加失败
    
                print(petShop.search("红"));
  }

  public static void print(Pet pet[]) {
    for (int i = 0; i < pet.length; i++) {
      if (pet[i] != null) {
        System.out.println(pet[i].getName() + "," + pet[i].getAge()
            + "," + pet[i].getColor() + "\n");
      }

    }
  }
}