Я столкнулся с похожим сценарием проекта, над которым я сейчас работаю. Я попытался имитировать то же самое с некоторым общим контекстом. Выполните следующий код:Отношение внутреннего внутреннего класса
interface Receptor
{
public void recept();
}
class Human
{
private void bloodCirculate(String receptor)
{
System.out.println("Blood flows in " + receptor);
}
public class Eye implements Receptor
{
@Override
public void recept()
{
bloodCirculate("eye");
System.out.println("Look");
}
}
private class Ear implements Receptor
{
@Override
public void recept()
{
bloodCirculate("ear");
System.out.println("Listen");
}
}
private void recept(Receptor receptor)
{
receptor.recept();
}
public void look()
{
recept(new Eye());
}
public void listen()
{
recept(new Ear());
}
}
Я пытался идентифицировать отношения между двумя классами. Это не наследование, потому что частные методы внешнего класса доступны во внутреннем классе. Он слегка смотрит на отношение Ассоциации, поскольку объект внутреннего класса хранится внутри внешнего класса.
По крайней мере, для уха это явно состав, так как человек имеет полный контроль над своим жизненным циклом. –
Да, в терминах UML отношения Human-Eye и Human-Ear являются ассоциациями типа aggregation = Composite. –
@ www.admiraalit.nl Поскольку 'Eye' является общедоступным с открытым конструктором, другой класс может получить свой собственный экземпляр. Это нарушит состав. –