Skip to content

Commit 36776f7

Browse files
meretskiyenhorse
authored andcommitted
added an answer to the question
1 parent 7ef861b commit 36776f7

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

core.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,39 @@ public class TestClass {
426426
[к оглавлению](#java-core)
427427

428428
## Можно ли сузить уровень доступа/тип возвращаемого значения при переопределении метода?
429+
430+
+ При переопределении метода нельзя сузить модификатор доступа к методу (например с public в MainClass до private в Class extends MainClass).
431+
+ Изменить тип возвращаемого значения при переопределении метода нельзя, будет ошибка attempting to use incompatible return type.
432+
+ Можно сузить возвращаемое значение, если они совместимы.
433+
434+
Например:
435+
436+
```java
437+
public class Animal {
438+
439+
public Animal eat() {
440+
System.out.println("animal eat");
441+
return null;
442+
}
443+
444+
public Long calc() {
445+
return null;
446+
}
447+
448+
}
449+
public class Dog extends Animal {
450+
451+
public Dog eat() {
452+
return new Dog();
453+
}
454+
/*attempting to use incompatible return type
455+
public Integer calc() {
456+
return null;
457+
}
458+
*/
459+
}
460+
```
461+
429462
## Возможно ли при переопределении метода изменить: модификатор доступа, возвращаемый тип, тип аргумента или их количество, имена аргументов или их порядок; убирать, добавлять, изменять порядок следования элементов секции `throws`?
430463
При переопределении метода сужать модификатор доступа не разрешается, т.к. это приведёт к нарушению принципа подстановки Барбары Лисков. Расширение уровня доступа возможно.
431464

0 commit comments

Comments
 (0)