Почему я должен использовать вложенные классы?
Когда возможно гнездовать классы?
Наиболее распространенным преимуществом, которое я вижу, является "общий объем" (использование переменных между классами).
Это менее привлекательная/менее эффективная практика, чем просто вставка вложенного класса в собственный файл и передача аргументов через конструктор?
Ответы
Ответ 1
Существует несколько причин использования вложенных классов, среди которых:
-
Это способ логически группировать классы, которые используются только в одном месте.
-
Он увеличивает инкапсуляцию.
-
Вложенные классы могут содержать более читаемый и поддерживаемый код.
-
Соединение от дочернего к родительскому классу проще, поскольку визуально иллюстрирует переменные и методы для каждого класса.
Ответ 2
В дополнение к уже упомянутым, еще одно преимущество:
- Вложенные классы также помогут вам достичь наследования множественного наследования (ref: "Мышление в Java", стр. 369 - раздел "Почему внутренние классы"?). Насколько я знаю, в Java нет другого способа добиться этого.
Ответ 3
По моему мнению, один случай, который я знаю при использовании вложенных классов, Когда мы видим, что один объект (OBJ1) тесно связан со вторым объектом (OBJ2), и мы не можем создать первый объект (OBJ1) без второго объекта (OBJ2). для примера у нас есть объект employee, а один связанный объект - это зарплата, и мы не можем самостоятельно создавать объект зарплаты. потому что без сотрудника, которому мы собираемся дать зарплату.
Сообщите, если я ошибаюсь.
Во втором случае, когда мы используем карту или карту, мы можем использовать вложенные классы для удаления карты карты, чтобы сделать код понятным.
третий, когда мы хотим отправить данные на клиентскую сторону, и мы можем отправить их в один объект со всеми данными:)
когда нам нужно что-то, что может определить компонент внешнего класса или мы хотим определить адаптер.
Ответ 4
Я нахожу частные статические классы полезными, когда мне нужно передать группу связанных полей в метод и манипулировать одной и той же группой данных во многих вызовах метода внутри класса. Подобно классу LinkedList.Node, который не подвергается воздействию внешней среды, скорее используется для группировки ссылок как одного элемента.