Если под «дочерним» вы подразумеваете подкласс, вы должны иметь возможность доступа к методам подкласса путем приведения, например, так:
((Dog) o).getName()
Это будет работать только в том случае, если вы приведете менее конкретный класс к более конкретному классу, который он реализует, в противном случае он выдаст исключение ClassCastException.
Тогда полное решение будет выглядеть так:
public int compareTo(Animal o) {
if (o instanceof Dog)
return this.name.compareToIgnoreCase(((Dog) o).getName());
return 0;
}
Это решение, однако, предполагает, что все, что не является собакой, одинаково, поэтому вы, вероятно, захотите реализовать логику и для других животных.
Вы упоминаете, что не знаете, что производит функция сравнения; это производит число, которое означает одно из следующего:
- Объект «меньше» значения параметра (<= -1) </li>
- Объект «равен» значению параметра (0)
- Объект «больше» значения параметра (> = 1)
Это можно использовать, например, для сортировки списка в соответствии с определенными вами правилами.