如下:外部其他类访问静态内部类中的方法
Outer.Inner in = new Outer.Inner();
in.function();
问题:
我不能理解的是,静态内部类中为什么还能有非静态方法?被static修饰的类(内部类)怎么还能new 对象?
为什么在没有外部类对象的情况下就能new内部类对象? 我能理解外部类访问静态内部类中的方法该是这样:
Out.Inner in = new Outer().new Inner();
in.function();
/*虽然我写的这种方法是错误的,但是我认为这样才能让人理解啊,(先创建外部类对象,然后通过外部类对象去new内部类对象,然后访问内部类中的方法)。
*/
问题:访问一个类中的方法应该这样 new 类().function(); 而题目中的new outer.inner().function();根本就没有外部类实例啊,这怎么能访问到定义在外部类中的内部类(那就更无法访问内部类中的方法啊)?
还有一点不太懂:
1.静态是共享数据,那么为什么静态内部类可以创建对象?这样做不就破坏了共享了么(比如new了多个对象,每个对象都不一样)。
ps:对此我有一种自己的理解不知道对不对?(创建静态类对象是因为静态类中有非静态方法)。
2.如果我的理解正确,那么是不是就是说如果静态类中的方法和属性全都是静态的,那么该静态类就不能创建对象?
.静态是共享数据,对的
那么为什么静态内部类可以创建对象?这样做不就破坏了共享了么(比如new了多个对象,每个对象都不一样)。
是不是静态的和能不能创建对象没有多大关系,静态的方法是不依赖与类成员的方法,静态类也是类似,只是它的调用方式和普通类不一样而已,其它方法和属性等和外部类都一样。