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

时间:2011-04-03 12:02:59

标签: java class inner-classes composition

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

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

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

以下示例是否准确?


E.g

大学是外课。

教师是内心阶级。


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

3 个答案:

答案 0 :(得分:6)

  

总之,我想谈谈内心阶级   到现实世界物体定位。

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

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

  

内在的类总是在里面   外类,如果我们删除外   类然后内部类也将   破坏。

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

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

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

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

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

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

心脏(或任何内脏) - 内心阶级 身体 - 外层。

如果是一个实际的主体(外部类的一个对象实例),它的内心(它的内部类的对象实例恰好与封闭体有关)也会死掉。

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

银行账户 - 附上课程 交易 - 封闭的类

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

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

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

什么是作文?

Wikipedia Link

什么是内部类?

Wikipedia Link

还有一件事:

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

答案 1 :(得分:4)

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

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
    }

}

在任何一种情况下,我们仍然有作文。 Inner Class给我们的东西是代码中的结构,通过使它成为内部类我们限制SteeringWheel类的范围,它只在Truck类中可见。

所以内部类主要是组织实现的工具 - 良好的代码组织有助于维护。

答案 2 :(得分:1)

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