Core - 1
Можно ли сузить уровень доступа/тип возвращаемого значения при переопределении метода?
В Java нельзя сузить уровень доступа при переопределении метода. Если метод в родительском классе объявлен с модификатором доступа `public` , то в дочернем классе его можно переопределить только с таким же или более широким уровнем доступа (например, `public` или `protected` ). То же самое относится и к типу возвращаемого значения - он должен быть таким же или являться подтипом типа возвращаемого значения в родительском методе. Это правило называется "принципом подстановки Лисков" (Liskov substitution principle) и является одним из принципов объектно-ориентированного программирования.