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

内部类在java中作为组合关系工作吗?,java,class,inner-classes,composition,Java,Class,Inner Classes,Composition,内部类总是在外部类的内部。如果我们移除外部类,内部类也会被销毁。我不关心内存释放,我只考虑这个概念。这和构图的概念是一样的。在这种情况下,内部类必须是真实世界中对象组合关系的示例 简而言之,在现实生活中,如何将内部类与面向对象关联起来?我指的是一个非技术性的例子;也许是与动物或电子游戏有关的隐喻 如果构造函数是一个很好的组合示例,那么在面向对象中涉及内部类的基本需求是什么 下面的例子准确吗 例如 大学是最外层的班级 教师是内部阶级 我确实理解面向对象,但我发现很难将内部类与现实世界联系起来。

内部类总是在外部类的内部。如果我们移除外部类,内部类也会被销毁。我不关心内存释放,我只考虑这个概念。这和构图的概念是一样的。在这种情况下,内部类必须是真实世界中对象组合关系的示例

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

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

下面的例子准确吗


例如

大学是最外层的班级

教师是内部阶级



我确实理解面向对象,但我发现很难将内部类与现实世界联系起来。你能给我一些建议吗?

答案是,它与“现实世界的面向对象”无关,不管是什么。它只是一种编程语言特性。
可能有一些面向对象的语言不支持内部类,就像有些编程语言支持内部函数/过程,而其他语言则不支持一样。

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

Class Truck extends Vehicle {

    private SteeringWheel mySteerer;

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

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

Class SteeringWheel {
     // stuff
}
或者,我们可以将其作为一个内部类:

Class Truck extends Vehicle {

    private SteeringWheel mySteerer;

    private Class SteeringWheel {
        // some stuff
    }

}
在这两种情况下,我们仍然有组成。内部类提供给我们的是代码中的一个结构,通过使其成为内部类,我们限制了
SteeringWheel
类的范围,它仅在
Truck
类中可见

所以内部类主要是组织实现的工具——良好的代码组织辅助维护

简言之,我想把内部类联系起来 到真实世界的对象定向

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

放在一边,你想要现实生活中的例子吗?来吧,你在开玩笑吧。没那么难。考虑一下你的第一句话,它已经告诉你在现实生活中它是如何工作的:

内部类始终位于 外类,如果我们去掉外类 类,则内部类也将是 毁灭

类是销毁的。对象,则这些类的实例为。你需要正确的定义。我假设你理解类和对象的概念,对吗?如果没有,我建议你现在停止

第二,外部和内部阶级并不一定意味着组成。当包含对象实例的外部类被销毁时,内部类的实例可以存在并且不会被销毁

组合中不相关的内部/外部类的真实示例: 日产240SX汽车是该车型(外层车型)的一个实例(特定车型)。它的引擎(特定于该车型)是日产240SX引擎(内部类)的特定对象或实例

汽车(外部类的对象实例)发生事故,大部分被摧毁,但引擎(内部类的对象实例)被打捞(未被摧毁)

构成中相关的内部/外部类的真实示例: 心脏(或任何内脏器官)-内类 身体-外部类

如果一个实际的实体(外部类的对象实例),它的心脏(内部类的对象实例,恰好在组成上与封闭实体相关)也会死亡

包含内部/外部类的真实合成示例: 银行账户-封闭类 事务-封闭类

交易只是一些钱和一种行为类型(借记、贷记)。这太简单了,无法保证从银行账户获得特殊待遇或制造

你关闭(销毁)一个银行账户,其中的所有交易也会被销毁

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

什么是作文?

什么是内部阶级?

还有一件事:
谷歌是你的朋友。如果你真的想成为一名工程师,你最好学会如何做自己的研究。

不,我不同意你的看法。我认为面向对象中的每个概念都来自于现实世界的概念。等一等,过一个小时或一天我会知道的。然后我会告诉你们,它与现实世界的概念有什么关系。“我认为面向对象中的每个概念都来自现实世界的概念。”-这不是琐碎的就是毫无意义的。但是我们试图告诉你,内部类根本不是OO概念。对不起,我不是有意伤害你的。但当我将面向对象的概念形象化时,我会将所有的概念与现实世界的情况联系起来。所以我…@R.K.-你不会对某人说他错了,但要花点时间去获取证据来证明这一点。也许是在政治领域,但不是在工程领域。你要么知道,要么不知道。此外,英戈是对的。你应该听取有实际工作经验的人的意见。OO并不是什么新鲜事,已经有40多年的历史了,几十年前我们就知道,现实世界中的模型不一定与面向对象模型正交(后者是我们为了更好地处理现实世界的复杂性而创建的人工制造)。@Ingo“可能有