[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-core-mozhno-li-suzit-uroven-dostupa-tip-vozvrashchaemogo-znacheniya-pri-pereopredelenii-metoda":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":19,"progress":20,"seo":21},36,"mozhno-li-suzit-uroven-dostupa-tip-vozvrashchaemogo-znacheniya-pri-pereopredelenii-metoda",2,"java-core","Java Core","☕","Можно ли сузить уровень доступа\u002Fтип возвращаемого значения при переопределении метода?","+ При переопределении метода нельзя сузить модификатор доступа к методу (например с public в MainClass до private в Class extends MainClass).\n+ Изменить тип возвращаемого значения при переопределении метода нельзя, будет ошибка attempting to use incompatible return type.\n+ Можно сузить возвращаемое значение, если они совместимы.\n\nНапример:\n\n```java\npublic class Animal {\n\n    public Animal eat() {\n        System.out.println(\"animal eat\");\n        return null;\n    }\n\n    public Long calc() {\n        return null;\n    }\n\n}\npublic class Dog extends Animal {\n\n    public Dog eat() {\n        return new Dog();\n    }\n\u002F*attempting to use incompatible return type\n    public Integer calc() {\n        return null;\n    }\n*\u002F\n}\n```","","junior",[15,16,17,18],"core","переопределение","ковариантность","модификаторы-доступа",[],null,{"title":22,"description":23,"ogTitle":24,"ogDescription":25,"keywords":26,"schemaAnswer":31,"featuredSnippetReady":32},"Сужение доступа и типа возвращаемого значения при переопределении метода Java — Gymterview","При переопределении нельзя сузить модификатор доступа и изменить тип возвращаемого значения. Можно сузить возвращаемый тип до совместимого наследника.","Можно ли сузить доступ или тип при переопределении метода?","Нельзя сузить модификатор доступа. Тип возвращаемого значения можно сузить только до совместимого наследника (ковариантный тип).",[27,28,29,30],"переопределение метода Java","сужение доступа override","ковариантный возвращаемый тип","override правила Java","При переопределении метода нельзя сузить модификатор доступа (например, с public до private). Изменить тип возвращаемого значения на несовместимый нельзя — будет ошибка компиляции. Однако можно сузить возвращаемое значение, если типы совместимы (ковариантный возвращаемый тип), например вернуть Dog вместо Animal.",true]