Можно ли сузить уровень доступа/тип возвращаемого значения при переопределении метода?



• При переопределении метода нельзя сузить модификатор доступа к методу (например с public в MainClass до private в Class extends MainClass).

• Изменить тип возвращаемого значения при переопределении метода нельзя, будет ошибка attempting to use incompatible return type.

• Можно сузить возвращаемое значение, если они совместимы.

Например:



public class Animal {



public Animal eat() {

System.out.println("animal eat");

return null;

}



public Long calc() {

return null;

}



}

public class Dog extends Animal {



public Dog eat() {

return new Dog();

}

/*attempting to use incompatible return type

public Integer calc() {

return null;

}

*/

}