内部类是否在java中作为组合关系工作?

use*_*rBI -2 java class composition inner-classes

内部类总是在外部类中.如果我们删除了外部类,那么内部类也将被销毁.我不关心内存释放,我只是在思考这个概念.这与构图的概念相同.在这种情况下,内部类必须是现实世界中对象的组合关系的示例.

简而言之,我如何将内在类与现实生活中的面向对象联系起来?通过这个,我的意思是一个非技术性的例子; 也许是与动物或电子游戏相关的隐喻?

如果构造函数是组合的一个很好的例子,那么在面向对象中涉及内部类的基本需求是什么?

以下示例是否准确?


例如

大学是外课.

教师是内在的阶级.


我确实理解面向对象,但我发现很难将内部阶级与现实世界联系起来.你能给我一些指示吗?

lui*_*nal 6

简而言之,我想将内部类与现实世界的面向对象联系起来.

由于世界不是100%面向对象,因此" 真实世界面向对象 " 这个表达没有多大意义.面向对象是一种简化,它是一种创建现实世界系统简化模型的方法.

把它放在一边,你想要现实生活中的例子吗?来吧,你在开玩笑吗?这并不难.考虑你的第一句话已经让你知道它在现实生活中会如何运作:

内部类总是在外部类中,如果我们删除外部类,那么内部类也将被销毁.

没有被破坏.对象,这些类的实例是.你需要正确定义你的定义.我假设你理解了类和对象的概念,对吧?如果没有,我建议你现在停下来.

其次,外层和内层并不一定意味着构成.内部类的实例可以存在,并且在销毁外部类封闭对象实例时不会被销毁.

组成中不涉及的内/外类的真实例子:

日产240SX汽车是该车型(外类)的一个实例(特定汽车).它的引擎(特定于该模型)是日产240SX引擎(内部类)的特定对象或实例.

汽车(外部类的对象实例)发生事故并且大部分被摧毁,但是引擎(内部类的对象实例)被抢救(它没有被破坏).

结构中涉及的内/外类的真实生活示例:

心脏(或任何内脏) - 内在的身体 - 外在的类.

如果一个实际的主体(外部类的一个对象实例),它的内心(它的内部类的对象实例恰好与组成的内容相关)也会死亡.

涉及内/外类的组合的真实生活示例:

银行账户 - 附上类交易 - 附上的类

交易只是一些钱和一种行动类型(借记,贷记).从银行账户进行特殊处理或制造太简单了.

您关闭(销毁)银行帐户,其中的所有交易也会被销毁.

显然,它们不会被破坏,因为银行将保留已关闭帐户(以及其中的所有活动)的记录,但从帐户所有者的角度来看,帐户及其内部会被关闭/销毁.

什么是作文?

维基百科链接

什么是内心阶级?

维基百科链接

还有一件事:

谷歌是你的朋友.如果你真的想成为一名工程师,你最好学习如何进行自己的研究.

  • 此外,您最好忘记OO模型与真实世界模型之间的一对一对应关系.没有一对一的对应关系,因为世界复杂得多,无法用OO方法完全建模或分析.世界是多范式的,模块化的,在许多情况下是程序性的.OO模型是我们为更好地分析世界而制造的人造结构.我们通常不假装它们是真实的或与现实世界有一对一的对应关系. (2认同)

djn*_*jna 5

区分类和对象。定义一个类

Class Truck extends Vehicle {

    private SteeringWheel mySteerer;

}
Run Code Online (Sandbox Code Playgroud)

在这里我们看到,当我们创建一个Truck对象时,它有 -a SteeringWheel。构成关系。现在, 的类定义在哪里SteeringWheel?到目前为止你还不知道。

它可以位于单独的类文件中:

Class SteeringWheel {
     // stuff
}
Run Code Online (Sandbox Code Playgroud)

或者我们可以将其设为内部类:

Class Truck extends Vehicle {

    private SteeringWheel mySteerer;

    private Class SteeringWheel {
        // some stuff
    }

}
Run Code Online (Sandbox Code Playgroud)

无论哪种情况,我们仍然有组合。内部类为我们提供的是代码中的结构,通过将其设为内部类,我们限制了类的范围SteeringWheel,它仅在Truck类中可见。

因此,内部类主要是组织实现的工具——良好的代码组织有助于维护。