阳台煮酒

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

看的李刚《疯狂java讲义》,里面讲内部类的地方感觉有点散而且不全,看完之后还是不十分清楚到底怎么用,于是自己写了个程序测试了一下。看如下代码,即可知道外部类和内部类+静态成员和非静态成员之间的相互调用规则。

 运行结果如下:

总结如下:

 

注意: 当如下出现报错:“无法从静态上下文中引用非静态时”,问题在于非静态方法或者非静态变量所属的类可能没有被实列化。因为要使用非静态方法,必须实例化它所属的类。

例如:将第40行代码改成inter2.StaticInter();

编译:

 

原因是StaticInter()虽然是属于静态内部类,但它自身是非静态方法(实例方法),不能通过内部类类名.非静态方法来调用该方法。

正确做法是将非静态方法所属的类(不管所属类是静态类还是非静态内部类)实例化,即创建所属类的对象,然后再调用该非静态方法。

 

posted on 2016-07-02 16:40  阳台煮酒  阅读(1798)  评论(0编辑  收藏  举报