[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-core-rasskazhite-pro-vlozhennye-klassy-v-kakikh-sluchayakh-oni-primenyayutsya":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},43,"rasskazhite-pro-vlozhennye-klassy-v-kakikh-sluchayakh-oni-primenyayutsya",2,"java-core","Java Core","☕","Расскажите про вложенные классы. В каких случаях они применяются?","Класс называется вложенным (Nested class), если он определен внутри другого класса. Вложенный класс должен создаваться только для того, чтобы обслуживать обрамляющий его класс. Если вложенный класс оказывается полезен в каком-либо ином контексте, он должен стать классом верхнего уровня. Вложенные классы имеют доступ ко всем (в том числе приватным) полям и методам внешнего класса, но не наоборот. Из-за этого разрешения использование вложенных классов приводит к некоторому нарушению инкапсуляции.\n\nСуществуют четыре категории вложенных классов:\n+ Static nested class (Статический вложенный класс);\n+ Member inner class (Простой внутренний класс);\n+ Local inner class (Локальный класс);\n+ Anonymous inner class (Анонимный класс).\n\nТакие категории классов, за исключением первого, также называют внутренними (Inner class). Внутренние классы ассоциируются не с внешним классом, а с экземпляром внешнего.\n\nКаждая из категорий имеет рекомендации по своему применению. Если вложенный класс должен быть виден за пределами одного метода или он слишком длинный для того, чтобы его можно было удобно разместить в границах одного метода и если каждому экземпляру такого класса необходима ссылка на включающий его экземпляр, то используется нестатический внутренний класс. В случае, если ссылка на обрамляющий класс не требуется - лучше сделать такой класс статическим. Если класс необходим только внутри какого-то метода и требуется создавать экземпляры этого класса только в этом методе, то используется локальный класс. А, если к тому же применение класса сводится к использованию лишь в одном месте и уже существует тип, характеризующий этот класс, то рекомендуется делать его анонимным классом.","","middle",[15,16,17,18,19],"ООП","core","inner-class","вложенные-классы","nested-class",[],null,{"title":23,"description":24,"ogTitle":25,"ogDescription":26,"keywords":27,"schemaAnswer":32,"featuredSnippetReady":33},"Вложенные классы в Java — виды и применение — Gymterview","Вложенный класс определён внутри другого класса. Четыре вида: static nested, member inner, local inner, anonymous inner. Имеют доступ к приватным членам.","Вложенные классы Java — когда и зачем применять?","Вложенный класс обслуживает внешний класс. 4 вида: static nested, member inner, local, anonymous. Имеют доступ к private-полям внешнего класса.",[28,29,30,31],"вложенные классы Java","nested class Java","inner class","когда использовать вложенный класс","Вложенный (nested) класс определён внутри другого класса и должен обслуживать только обрамляющий класс. Вложенные классы имеют доступ ко всем (включая private) полям и методам внешнего класса. Существует четыре категории: статический вложенный, простой внутренний, локальный и анонимный. Внутренние классы ассоциируются с экземпляром внешнего класса, а не с самим классом.",true]