Я недавно выучил как 3 новых языка, и я начинаю путать их. Я не занимался Java в создании чего-то особенно сложного (за исключением Android) в течение пары лет. У меня проблемы с запоминанием, если это возможно:
Я делаю ArrayList на подклассы, в основном, чтобы я мог держать его в порядке. Я пытаюсь переопределить метод add(object)
, но я хочу, чтобы он возвращал int вместо логического (местоположение добавленного объекта). Но я получаю ошибки в типе возврата моего метода.
Возможно ли то, что я хочу, даже в языке? Можете ли вы иметь метод в подклассе, возвращающий что-то отличное от метода суперкласса?
Или я пытаюсь сделать что-то глупое? Это нарушает is-a
идею наследования? Стоит ли просто инкапсулировать массив, а не расширять его?
Для справки, часть того, что я пытаюсь сделать:
public class AuthorArray extends ArrayList \{
@Override
public int add(Author object) {
super.add(object);
Collections.sort(this, new SortByLastName());
return this.indexOf(object);
}
}