黑马程序员技术交流社区

标题: 非静态内部类为什么不能有静态方法??? [打印本页]

作者: 不去会死    时间: 2014-6-21 15:19
标题: 非静态内部类为什么不能有静态方法???
本帖最后由 不去会死 于 2014-6-21 19:31 编辑

求一种最直白最通俗的理解

作者: Running    时间: 2014-6-21 16:47
这是我在资料上看到的,希望能帮到你。

这样会产生歧义。例子如下:
class Outer {
   int outerX;
   Inner inner1 = new Inner();
   Inner inner2 = new Inner();
   class Inner {
     int innerX;
   }
}

Outer outer1 = new Outer();
Outer outer2 = new Outer();

假如innerX是static的,那么这个static的含义是
1:仅是同一outer实例下的不同inner实例共享:
outer1.inner1.innerX=outer1.inner2.innerX,And
outer2.inner1.innerX=outer2.inner2.innerX,But
outer1.inner1.innerX!=outer2.inner1.innerX,Hence
outer1.inner2.innerX!=outer2.inner2.innerX

2: 所有outer实例的inner实例都共享:
outer1.inner1.innerX=outer1.inner2.innerX,And
outer2.inner1.innerX=outer2.inner2.innerX,And
outer1.inner1.innerX=outer2.inner1.innerX,Hence
outer1.inner2.innerX=outer2.inner2.innerX
作者: 轩辕冰晨    时间: 2014-6-21 17:50
静态先于对象存在,非静态类都还没加载,怎么加载内部的方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2