[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-core-vozmozhno-li-pri-pereopredelenii-metoda-izmenit-modifikator-dostupa-vozvrashchaemyy-tip-tip-argumenta-ili-ikh-kolichestvo-imena-argumentov-ili-ikh-poryadok-ubirat-dobavlyat-izmenyat-poryadok-sledovani":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":20,"progress":21,"seo":22},37,"vozmozhno-li-pri-pereopredelenii-metoda-izmenit-modifikator-dostupa-vozvrashchaemyy-tip-tip-argumenta-ili-ikh-kolichestvo-imena-argumentov-ili-ikh-poryadok-ubirat-dobavlyat-izmenyat-poryadok-sledovani",2,"java-core","Java Core","☕","Возможно ли при переопределении метода изменить: модификатор доступа, возвращаемый тип, тип аргумента или их количество, имена аргументов или их порядок; убирать, добавлять, изменять порядок следования элементов секции `throws`?","При переопределении метода сужать модификатор доступа не разрешается, т.к. это приведёт к нарушению принципа подстановки Барбары Лисков. Расширение уровня доступа возможно.\n\nМожно изменять все, что не мешает компилятору понять какой метод родительского класса имеется в виду:\n\n+ Изменять тип возвращаемого значения при переопределении метода разрешено только в сторону сужения типа (вместо родительского класса - наследника).\n+ При изменении типа, количества, порядка следования аргументов вместо переопределения будет происходить _overloading_ (перегрузка) метода.\n+ Секцию `throws` метода можно не указывать, но стоит помнить, что она остаётся действительной, если уже определена у метода родительского класса. Так же, возможно добавлять новые исключения, являющиеся наследниками от уже объявленных или исключения `RuntimeException`. Порядок следования таких элементов при переопределении значения не имеет.","","middle",[15,16,17,18,19],"core","переопределение","LSP","override","throws",[],null,{"title":23,"description":24,"ogTitle":25,"ogDescription":26,"keywords":27,"schemaAnswer":32,"featuredSnippetReady":33},"Что можно изменить при переопределении метода в Java — Gymterview","При переопределении метода можно расширить доступ, сузить возвращаемый тип, менять имена аргументов и секцию throws. Нельзя сужать модификатор доступа.","Правила переопределения метода в Java — что можно менять?","Доступ — только расширить. Тип возврата — только сузить. Аргументы изменить нельзя (будет перегрузка). Секцию throws можно сужать и добавлять RuntimeException.",[28,29,30,31],"переопределение метода Java правила","override throws Java","принцип подстановки Лисков","изменение сигнатуры метода","Сужать модификатор доступа нельзя (нарушение принципа подстановки Лисков), расширять — можно. Возвращаемый тип можно только сузить (ковариантный тип). Изменение типа, количества или порядка аргументов приведёт к перегрузке, а не переопределению. Секцию throws можно не указывать, можно добавлять наследников уже объявленных исключений или RuntimeException, порядок элементов значения не имеет.",true]