Java的外部类和内部类+静态变量和非静态变量的组合关系

Posted 阳台煮酒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java的外部类和内部类+静态变量和非静态变量的组合关系相关的知识,希望对你有一定的参考价值。

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

 运行结果如下:

总结如下:

 

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

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

编译:

 

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

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

 

以上是关于Java的外部类和内部类+静态变量和非静态变量的组合关系的主要内容,如果未能解决你的问题,请参考以下文章

java的静态内部类中定义的变量是全局的么?

JAVA 中外部类可以访问非静态内部类的私有属性???

java内部类访问外部静态变量

Java面试题|静态内部类和非静态内部类有什么区别?

静态类和内部类的区别是啥

java 内部类和外部类的关系