Группировать репо на GitHub? [Дубликат]

Вот ключевые различия и сходства между внутренним классом Java и статическим вложенным классом.

Надеюсь, что это поможет!

Внутренний класс

  • к внешнему классу и экземпляру, и статическим методам и полям
  • Связан с экземпляром охватывающего класса, поэтому для его создания сначала нужен экземпляр внешнего класса (обратите внимание на место ключевого слова new ):
    Outerclass.InnerClass innerObject = outerObject.new Innerclass();
    
  • Невозможно определить какие-либо статические элементы сами
  • Не может быть объявления класса или интерфейса

Статический вложенный класс

  • Невозможно получить доступ к методам или полям экземпляра внешнего класса
  • Не связано с каким-либо экземпляром класса включения So, чтобы его создать:
    OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
    

Сходства

  • Оба внутренних класса могут обращаться к даже частным полям и методам внешнего класса
  • . Также класс Outer имеет доступ к закрытым полям и методам внутренних классов
  • Оба класса могут иметь частный , защищенный или общедоступный модификатор доступа

Зачем использовать Neste d Классы?

Согласно документации Oracle есть несколько причин ( полная документация ):

  • Это способ логически группы классов, которые используются только в одном месте: если класс полезен только для одного другого класса, то логично вставлять его в этот класс и поддерживать вместе. Вложение таких «вспомогательных классов» делает их пакет более упорядоченным.
  • Он увеличивает инкапсуляцию: рассмотрим два класса верхнего уровня: A и B, где B нужен доступ к членам A, которые иначе были бы объявлены частными. Скрывая класс B в классе A, члены A могут быть объявлены частными, а B может получить к ним доступ. Кроме того, сам B может быть скрыт от внешнего мира.
  • Это может привести к более легко читаемому и поддерживаемому коду: Вложение небольших классов в классы верхнего уровня помещает код ближе к тому, где он используется.

29
задан zanerock 3 January 2014 в 17:07
поделиться