gpt4 book ai didi

java - 外层类关系

转载 作者:行者123 更新时间:2023-11-29 04:38:26 24 4
gpt4 key购买 nike

我在目前正在进行的项目中遇到了类似的情况。我尝试用一​​些一般上下文来模拟相同的内容。按照下面的代码:

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());
}
}

我试图确定这两个类之间的关系。这不是继承,因为外部类的私有(private)方法可以在内部类中访问。由于内部类的对象保存在外部类中,因此看起来有点像关联关系。

最佳答案

根据UML规范11.4.3.1

A Class acts as the namespace for various kinds of Classifiers defined within its scope, including Classes. Nested Classifiers are members of the namespace of the containing Class. Classifier nesting is used for reasons of information hiding.

因此在您的情况下,Eye 和 Ear 嵌套在 Human 中。不幸的是,规范没有为类提供嵌套操作符。您可以将它们呈现在额外的隔间中(UML 在除了 4 个强制性隔间之外可以在隔间中呈现什么方面留下了很大的灵 active )就像针对组件的嵌套类所建议的那样(参见 11.6.5,尤其是图 11.45)。您最终还可以考虑一个特定于包的符号,即在嵌套包(在您的情况下是人类方面)的圆圈中带有加号的一行。这在 12.2.5 中有介绍,尤其是图 12.5。但是请注意,从形式上讲,第二种表示法仅适用于包,不适用于类。

关于java - 外层类关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40263910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com