Skip to content

Commit

Permalink
added an answer to the question
Browse files Browse the repository at this point in the history
  • Loading branch information
meretskiy authored and enhorse committed Feb 17, 2021
1 parent 7ef861b commit 36776f7
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions core.md
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,39 @@ public class TestClass {
[к оглавлению](#java-core)

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

+ При переопределении метода нельзя сузить модификатор доступа к методу (например с public в MainClass до private в Class extends MainClass).
+ Изменить тип возвращаемого значения при переопределении метода нельзя, будет ошибка attempting to use incompatible return type.
+ Можно сузить возвращаемое значение, если они совместимы.

Например:

```java
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;
}
*/
}
```

## Возможно ли при переопределении метода изменить: модификатор доступа, возвращаемый тип, тип аргумента или их количество, имена аргументов или их порядок; убирать, добавлять, изменять порядок следования элементов секции `throws`?
При переопределении метода сужать модификатор доступа не разрешается, т.к. это приведёт к нарушению принципа подстановки Барбары Лисков. Расширение уровня доступа возможно.

Expand Down

0 comments on commit 36776f7

Please sign in to comment.