内部类总是在外部类中。如果我们删除了外部类,那么内部类也将被销毁。我不关心内存释放,我只是在思考这个概念。这与构图的概念相同。在这种情况下,内部类必须是现实世界中对象的组合关系的例子。
简而言之,我如何将内在类与现实生活中的面向对象联系起来?通过这个,我的意思是一个非技术性的例子;也许是一个与动物或电子游戏有关的比喻?
如果构造函数是一个很好的组合示例,那么在面向对象中涉及内部类的基本需求是什么?
以下示例是否准确?
E.g
大学是外课。
教师是内心阶级。
我确实理解面向对象,但我发现很难将内部类与现实世界联系起来。你能给我一些指示吗?
答案 0 :(得分:6)
总之,我想谈谈内心阶级 到现实世界物体定位。
表达“真实世界对象定位”没有多大意义,因为世界不是100%面向对象的。面向对象简化,它是一种创建现实世界系统简化模型的方法。
把它放在一边,你想要现实生活中的例子吗?来吧,你在开玩笑吗?这并不难。考虑你的第一句话已经让你知道它在现实生活中会如何运作:
内在的类总是在里面 外类,如果我们删除外 类然后内部类也将 破坏。
类不已销毁。对象,这些类的实例是。你需要正确定义你的定义。我假设你理解了类和对象的概念,对吧?如果没有,我建议你现在就停止。
其次,外层和内层并不一定意味着构成。当包含对象实例的外部类被销毁时,内部类的实例可以存在并且不被销毁。
日产240SX汽车是该车型(外类)的一个实例(特定汽车)。它的引擎(特定于该模型)是日产240SX引擎(内部类)的特定对象或实例。
汽车(外部类的对象实例)发生事故并且大部分被摧毁,但是引擎(内部类的对象实例)被抢救(它没有被破坏。)
心脏(或任何内脏) - 内心阶级 身体 - 外层。
如果是一个实际的主体(外部类的一个对象实例),它的内心(它的内部类的对象实例恰好与封闭体有关)也会死掉。
银行账户 - 附上课程 交易 - 封闭的类
交易只是一些钱和一种行动类型(借记,贷记)。通过银行账户进行特殊处理或制造过于简单。
您关闭(销毁)银行帐户,其中的所有交易也会被销毁。
显然,它们不会被破坏,因为银行会保留已关闭帐户的记录(以及其中的所有活动),但从帐户所有者的角度来看,帐户及其内部会被关闭/销毁
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)
答案是,它与“真实世界的面向对象”无关,无论是什么。它只是一种编程语言功能。 可能有面向对象的语言不支持内部类 - 就像有支持内部函数/过程的编程语言而其他语言不支持。