2017-10-06 118 views
0

我试图学习java,但我遇到了我已经试图了解了几天的obsticle,但我只是不明白我在这里检查过的搜索视频,但不能找到正确的解释,我会明白。Java的使用和内部点的点

我的问题是什么是内部类和解释什么归类的内每种类型的用途,像匿名的,本地内...

我听到一些人说这是很好的封装是否意味着它的点不容易访问类,如果我想创建具有相同名称的普通类,那么还存在名称空间?也许如果我只需要在其他课程中单独使用课程,我只是创建内部然后呢?当我需要更多一次时,我应该正常上课?一般来说,我不知道什么时候应该使用它,我得到的语法和一切我只是没有看到它的重点,为什么我应该使用它,而不是普通的类。

+0

[documentation](https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html)不包含哪些内容?或者本网站上的其他问题,比如[内部类的目的是什么](https://stackoverflow.com/questions/11398122/what-are-the-purposes-of-inner-classes)? – csmckelvey

回答

0

这个问题取决于个人意见和喜好。我个人完全不使用本地内部类

这一切都围绕着你,程序员,喜欢设计你的架构。除了无障碍,没有直接亲或亲


我想说的匿名类点是快速在代码中的一个位置提供简单的实现。如果您需要重用匿名类或开始创建复杂匿名类我建议创建一个普通班来代替。

类似的东西可以说是本地内部类。如果您有一个大型项目(例如多个贡献者),那么它们可能很有用,并且您需要一个小型辅助类以实现您当前的课程。然而,你应该使用普通班代替如果辅助类可能是利用他人或者如果你愿意再次以后需要它。但是,如果情况并非如此,并且对于这一类纯粹是辅助类别,则确实可以将其创建为本地内部类


一个常用的例子为匿名类:

WindowAdapter adapter = new WindowAdapter() { 
    @Override 
    public void windowCloses(WindowEvent e) { 
     doSomething(); 
    } 
} 

无需创建新的常规类,如果你只是想致电窗口关闭的方法。

+0

也许你有任何内部类使用的程序示例? – renekton

+0

没有什么共同之处。通常我会看到一些小容器/包装类。只是为了存储一些值。例如,Java API在'Map'内有'Entry'类。或者'LinkedList'也有一个'Entry'类。它里面还有一些特殊的'Iterator'类。但在这种情况下,我宁愿为'LinkedList'创建一个包,并将所有东西都存储为常规类。但我认为他们希望保持所有的紧凑和清晰,因此'java.util'然后直接将所有类都不带子包。 – Zabuza