Java内部类主要分为成员内部类、局部内部类、匿名内部类、静态内部类。
为什么使用内部类:使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。《Thinking in Java》
可以这样说,接口只是解决了部分问题,而内部类使得多重继承的解决方案变得更加完整。
内部类使用自己的属性和方法:使用.this与.new。
OuterClass outerClass = new OuterClass();
OuterClass.InnerClass innerClass = outerClass.new InnerClass();
innerClass.display();
----------------------------------------------------------------
内部类使用外部类的属性和方法
public class InnerClass{
public OuterClass getOuterClass(){
return OuterClass.this;
}
}
public static void main(String[] args) {
OuterClass outerClass = new OuterClass();
OuterClass.InnerClass innerClass = outerClass.new InnerClass();
innerClass.getOuterClass().display();
}
成员内部类:它是外围类的一个成员,所以他是可以无限制的访问外围类的所有 成员属性和方法,尽管是private的,但是外围类要访问内部类的成员属性和方法则需要通过内部类实例来访问。
在成员内部类中要注意两点,第一:成员内部类中不能存在任何static的变量和方法;第二:成员内部类是依附于外围类的,所以只有先创建了外围类才能够创建内部类。
局部内部类:定义在方法内或者定义在作用域内
匿名内部类:Android编程中经常使用
静态内部类: 1、它的创建是不需要依赖于外围类的2、 它不能使用任何外围类的非static成员变量和方法。
摘自 http://blog.csdn.net/chenssy/article/details/13024951