You did not overwrite ArrayList.add(Object). Dog is an Object, so...
Solution
1. add
   public void add(Object o) {
      if( !(o instanceof Cat) )
         ...
      else
         ...
   }or:
2. change
class Cats {
  Arraylist list = new Arraylist;
  public void add(Cat cat) {
    ...
  }
}