关于内部类的总结

 

1,因为内部类相当于外部了的一个全局变量,所以内部类的方法中可以直调用外部类的所有方法和成员变量!除了静态内部类,静态内部类只能直接调用外部了的静态成员变量和方法。

2.不能在内部类中new 外部类,否则会报错!堆栈溢出!

Exception in thread "main" java.lang.StackOverflowError

3.方法内部类,只能在方法内实例化

方法内部类

不能用当前方法中的非final的局部变量,因为方法内部类当前方法的局部变量位于栈上,只生存在方法的生命周期内,当方法结束后其栈结构被删除,局部变量长历史。该方法结束后方法内部类的对象可能还在堆中!所以要final变量才行,他不与对象挂钩!

 

匿名内部类

匿名内部类不能有构造方法,因为匿名内部类没有名字因此不能实例化因此不能有构造方法。也因为如此,

不能有静态成员,和静态方法,因为静态类不能直接被实例化的,必须由内外部类实例化才实例化他,既然静态对象是默认加载,那么静态内部类应该先于外部类被加载到内存中。那么这是又和我们之前的一个结论相反(首先内部的静态类他是不能直接被实例化的。你必须实例化外部类才能实例化它。)所以这种写法是错误的

匿名内部类不能是public,protected,private,static 应该没有修饰符的

 

你可能感兴趣的:(关于内部类的总结)