Если подкласс хочет ввести уникальное поведение для вызова метода, который он унаследовал, то этот метод должен быть переопределен.
Наиболее распространенные случаи для этого: toString
,equals
и hashCode
имеют право на переопределение для всех ваших пользовательских классов, учитывая, что ваш пользовательский класс не хочет использовать Object#toString
, Object#equals
или Object#hashCode
, которые все "бесполезны" дляВаши пользовательские реализации.
Если подкласс не не желает вводить уникальное поведение для вызова метода, который он унаследовал, то в этом нет необходимости.Вместо этого вы можете полагаться на поведение родительского класса.
Если ваш родительский класс abstract
, то у вас нет выбора , но для реализации методов, которые родительский класс решил не реализовывать.
Если вы реализуете интерфейс, применяется тот же принцип, что и абстрактные классы - поскольку интерфейс сам ничего не реализует, вы должны реализовать методы, которые предписывает интерфейс.