use*_*rBI -2 java class composition inner-classes
内部类总是在外部类中.如果我们删除了外部类,那么内部类也将被销毁.我不关心内存释放,我只是在思考这个概念.这与构图的概念相同.在这种情况下,内部类必须是现实世界中对象的组合关系的示例.
简而言之,我如何将内在类与现实生活中的面向对象联系起来?通过这个,我的意思是一个非技术性的例子; 也许是与动物或电子游戏相关的隐喻?
如果构造函数是组合的一个很好的例子,那么在面向对象中涉及内部类的基本需求是什么?
以下示例是否准确?
例如
大学是外课.
教师是内在的阶级.
我确实理解面向对象,但我发现很难将内部阶级与现实世界联系起来.你能给我一些指示吗?
简而言之,我想将内部类与现实世界的面向对象联系起来.
由于世界不是100%面向对象,因此" 真实世界面向对象 " 这个表达没有多大意义.面向对象是一种简化,它是一种创建现实世界系统简化模型的方法.
把它放在一边,你想要现实生活中的例子吗?来吧,你在开玩笑吗?这并不难.考虑你的第一句话已经让你知道它在现实生活中会如何运作:
内部类总是在外部类中,如果我们删除外部类,那么内部类也将被销毁.
类没有被破坏.对象,这些类的实例是.你需要正确定义你的定义.我假设你理解了类和对象的概念,对吧?如果没有,我建议你现在停下来.
其次,外层和内层并不一定意味着构成.内部类的实例可以存在,并且在销毁外部类封闭对象实例时不会被销毁.
日产240SX汽车是该车型(外类)的一个实例(特定汽车).它的引擎(特定于该模型)是日产240SX引擎(内部类)的特定对象或实例.
汽车(外部类的对象实例)发生事故并且大部分被摧毁,但是引擎(内部类的对象实例)被抢救(它没有被破坏).
心脏(或任何内脏) - 内在的身体 - 外在的类.
如果一个实际的主体(外部类的一个对象实例),它的内心(它的内部类的对象实例恰好与组成的内容相关)也会死亡.
银行账户 - 附上类交易 - 附上的类
交易只是一些钱和一种行动类型(借记,贷记).从银行账户进行特殊处理或制造太简单了.
您关闭(销毁)银行帐户,其中的所有交易也会被销毁.
显然,它们不会被破坏,因为银行将保留已关闭帐户(以及其中的所有活动)的记录,但从帐户所有者的角度来看,帐户及其内部会被关闭/销毁.
谷歌是你的朋友.如果你真的想成为一名工程师,你最好学习如何进行自己的研究.
区分类和对象。定义一个类
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类中可见。
因此,内部类主要是组织实现的工具——良好的代码组织有助于维护。
| 归档时间: |
|
| 查看次数: |
2944 次 |
| 最近记录: |