Почему я должен использовать вложенные классы?

Когда возможно гнездовать классы? Наиболее распространенным преимуществом, которое я вижу, является "общий объем" (использование переменных между классами).

Это менее привлекательная/менее эффективная практика, чем просто вставка вложенного класса в собственный файл и передача аргументов через конструктор?

Ответы

Ответ 1

Существует несколько причин использования вложенных классов, среди которых:

  • Это способ логически группировать классы, которые используются только в одном месте.

  • Он увеличивает инкапсуляцию.

  • Вложенные классы могут содержать более читаемый и поддерживаемый код.

  • Соединение от дочернего к родительскому классу проще, поскольку визуально иллюстрирует переменные и методы для каждого класса.

Ответ 2

В дополнение к уже упомянутым, еще одно преимущество:

  • Вложенные классы также помогут вам достичь наследования множественного наследования (ref: "Мышление в Java", стр. 369 - раздел "Почему внутренние классы"?). Насколько я знаю, в Java нет другого способа добиться этого.

Ответ 3

По моему мнению, один случай, который я знаю при использовании вложенных классов, Когда мы видим, что один объект (OBJ1) тесно связан со вторым объектом (OBJ2), и мы не можем создать первый объект (OBJ1) без второго объекта (OBJ2). для примера у нас есть объект employee, а один связанный объект - это зарплата, и мы не можем самостоятельно создавать объект зарплаты. потому что без сотрудника, которому мы собираемся дать зарплату.
Сообщите, если я ошибаюсь.

Во втором случае, когда мы используем карту или карту, мы можем использовать вложенные классы для удаления карты карты, чтобы сделать код понятным.

третий, когда мы хотим отправить данные на клиентскую сторону, и мы можем отправить их в один объект со всеми данными:)

когда нам нужно что-то, что может определить компонент внешнего класса или мы хотим определить адаптер.

Ответ 4

Я нахожу частные статические классы полезными, когда мне нужно передать группу связанных полей в метод и манипулировать одной и той же группой данных во многих вызовах метода внутри класса. Подобно классу LinkedList.Node, который не подвергается воздействию внешней среды, скорее используется для группировки ссылок как одного элемента.