Каковы различия и сходства между композицией и внутренними классами? Я пытаюсь изучить принципы Java и попытаться выяснить весь образ. Для меня лучше сделать аналогию и увидеть различия и сходства между понятиями, чтобы использовать их по-разному.Состав против внутренних классов
Определение состава: «Композиция - это техника проектирования для реализации отношений« в классах ». «Java-композиции достигается за счет использования переменных экземпляра, который относится к другим объектам»
Определение внутреннего класса (или класса члена, а не анонимно): «Класс член также определяется в качестве члена класса ограждающей, но не объявляется с помощью статического модификатора. Этот тип внутреннего класса аналогичен экземпляру метода или поля. Экземпляр класса-члена всегда связан с экземпляром охватывающего класса, а код класса-члена имеет доступ ко всем поля и методы»
Так, сталкивая два определения, я вижу некоторые общие черты:
1. Both have HAS-A relationship
2. Both are strictly dependent on the outer class lifetime
3. can be declared private
Отличия:
1. Inner classes uses classes, composition use instances (?!)
2. In composition no restriction to use the variables of the "outer" class
Пожалуйста, поправьте меня, если я совершенно неправильно, мне нужно проследить лучше пределы двух понятий.
Вот сравнивая яблоки с апельсинами. У вас должно быть общее основание для сравнения двух вещей. Это похоже на сравнение стиральной машины с поездом на основе того, что у обоих есть двигатели. Вы должны прочитать примеры, демонстрирующие использование этих двух понятий, и посмотреть, могут ли они использоваться для решения проблем в одном домене или нет. – RealSkeptic
Справа. Но на каких основаниях вы пытаетесь их сравнить? Например, вы можете сказать: «Чтобы решить проблему X, я могу использовать это решение или это решение, и два решения аналогичны тем, что они одновременно решают проблему X и, возможно, также в других аспектах, но они различны в аспекте A, B и C ". Но вы начинаете с общей точки зрения: необходимость решить проблему X. – RealSkeptic
@RealSkeptic, могу ли я процитировать вас, если бы мне пришлось ответить на такой вопрос на собеседовании? :) – Alexis