我在Outer中定义了一个内部类 Inner,然后main函数在Test类中
第一:我想实现在main中直接调用Inner的print方法,可不可以不去构造getInner()的方法,
如果可以请多写其他的方法,可以在main中调用Inner方法
可以,参见如下代码:- class Outer{
- private int a = 100;
- class Inner
- {
- private int a = 50;
- void print()
- {
- int a = 30;
- System.out.println(a);
- System.out.println(this.a);
- System.out.println(Outer.this.a);
- }
- }
- void print()
- {
- Inner p = new Inner();
- p.print();
- }
- Inner getInner()
- {
- return new Inner();
- }
- }
- public class Test
- {
- public static void main(String [] args)
- {
- Outer o = new Outer();
- Outer.Inner fi = o.getInner();
- fi.print();
- //以下效果和fi.print();相同
- Outer.Inner inner = o.new Inner();
- inner.print();
- }
- }
复制代码 第二:如果我把main函数放进Test里面的话,上述同样的问题
main函数不就在Test里面吗?
第三:为什么静态类中不能调用非静态类的成员变量和方法?
一个类声明为 static 的,表示它仅包含静态成员,不能使用 new 关键字创建静态类的实例。
而对于非静态类的方法和变量,在使用前需要创建类的实例对象后才可以使用,所以静态类中不能调用非静态类的成员变量和方法。
[ 本帖最后由 孙斌 于 2011-07-25 13:35 编辑 ] |