请重新标记这个问题,包括与它相关的什么时候应该使用嵌套类的示例?
所以我的Java书对嵌套类一整章的语言,但你应该只有真正使用它们的音符结束了,当说到“造型组成关系和实现你想隐藏的课程的内部“。所以让我们来讨论一下你想要使用嵌套类和一些例子。
请重新标记这个问题,包括与它相关的什么时候应该使用嵌套类的示例?
所以我的Java书对嵌套类一整章的语言,但你应该只有真正使用它们的音符结束了,当说到“造型组成关系和实现你想隐藏的课程的内部“。所以让我们来讨论一下你想要使用嵌套类和一些例子。
嵌套/内部类只是一个专门用于另一个类的上下文的类,它没有它自己的类文件。如果它链接到一个实例,它只能在父类实例的上下文中实例化;它可以看到私人数据,或者只有私人静态数据,如果它是静态类。
Java开发者站点有一个嵌套类教程一个示例: http://java.sun.com/docs/books/tutorial/java/javaOO/nested.html
使用的几个例子:
(考虑像Hibernate这样的工具的数据库会话):假设你有一个Session接口,并且SessionFactory返回一个Sessio的实例ñ。实现Session接口的SessionImpl具体类可以是知道如何构建和初始化它的工厂的内部类。
在检票Web框架,各GUI部件具有相关联的“模型”,其任务是将数据线连接到组件。界面如下所示:
public interface IModel extends IDetachable {
public Object getObject();
public Object setObject();
}
假设您有一些特殊的逻辑来检索您编写的自定义GUI组件的数据。由于没有其他组件以相同的方式检索数据,因此可以在提供IModel的位置使用匿名类来处理数据检索。如果你需要重用你的IModel实现的同一个类中有另一个点,你可以把它作为一个内部类。之后,如果您需要其他模型,则可以将其转换为顶级类。
通常,在需要类定义的情况下使用内部类,但该类仅在父类的上下文中可用或者仅有意义。
我对嵌套类的实际使用情况是在全局设置对象中。
父类是一个Singleton,嵌套类作为设置类别。
有在做内部对象作为单独的类,因为它们是没有真正的点在设置类范围之外不使用它们。
我使用嵌套类来封装算法,这些算法通常会作为一个有很多参数的方法来完成。我使用具有原始数据的类,并将算法放入嵌套类的单独文件中(使用partial关键字)。通过这种方式,我可以在算法完成后为该算法和其(工作)数据生成属性。 我知道,没有嵌套类可以很容易地完成,但这种感觉是正确的,因为算法是故意为父类构建的。
public partial class Network
{
partial void initFDLF()
{
fdlf=new FDLF(this);
}
public FDLF fdlf;
public class FDLF
{
internal bool changed=true;
internal bool pvchange=true;
public double epsilon = 0.001;
public bool fdlfOk=false;
public void init(){...}
public void run(){...}
...
这个问题有一个“语言不可知“标签,部分类只存在于.net中 – 2014-03-08 23:56:51
备注:有一篇关于Sun对微软引入MS Java代表的回应的有趣文章(无链接,抱歉)。它的要点是嵌套班比代表做得更好。这是导致Sun起诉MS并最终导致.Net和C#的问题之一...(我想这也总结了我关于嵌套类的感受 - 没有什么好的可以从他们中诞生出来。:-)) – 2009-10-11 00:46:25
可能的重复[为什么/什么时候应该在.net中使用嵌套类?或者你不应该?](http://stackoverflow.com/questions/48872/why-when-should-you-use-nested-classes-in-net-or-shouldnt-you) – nawfal 2013-04-18 20:46:32