* 静态内部类 和普通的类一样,内部类也可以有静态的。不过和非静态内部类相比,区别就在于静态内部类没有了指向外部的引用。这实际上和 C++ 中的嵌套类很相像了,Java 内部类与 C++ 嵌套类最大的不同就在于是否有指向外部的引用这一点上,当然从设计的角度以及以它一些细节来讲还有区别。 除此之外,在任何非静态内部类中,都不能有静态数据,静态方法或者又一个静态内部类(内部类的嵌套可以不止一层)。不过静态内部类中却可以拥有这一切。这也算是两者的第二个区别吧。
* 局部内部类 是的,Java 内部类也可以是局部的,它可以定义在一个方法甚至一个代码块之内。
public class Goods1 { public Destination dest(String s) { class GDestination implements Destination { private String label; private GDestination(String whereTo) { label = whereTo; } public String readLabel() { return label; } }
return new GDestination(s); }
public static void main(String[] args) { Goods1 g= new Goods1(); Destination d = g.dest("Beijing"); } }