class waibu {
private int index=100;
class  a{
private int index=50;
void print(){
int index=30;
System.out.println(index);
System.out.println(this.index);
System.out.println(waibu.this.index);
}
}
void print(){
 a a=new a();
 a.print();
}
a geta(){
return new a();   
}
} public class neibulei{
public static void main(String[]args){
waibu b=new waibu();
waibu.a f=b.new a();//这样做有什么作用呢?
}
}

解决方案 »

  1.   

    作用就是,你new了一个a的对象,可以调用a里面的方法,
    如: f.print();当然你这只是一个演示,可能没有看到好处,实际应用中,有时候还是会用到的。
      

  2.   

    1. 内部类可以声明为private或protected,可以声明为static
    2. 内部类中可以直接访问外部类的方法。
    3. 内部类中可以直接访问外部类的数据成员
    4. 在外部类的静态方法中创建内部类对象,必须采用“外部类名.内部类名”的形式指定对象的类型,并且非静态内部类的对象必须通过外部类对象来创建。如:
    public static void f(){
    OuterClass out = new OuterClass();
    OuterClass.InnerClass in = out.new InnerClass();
    }
    5. 不能通过外部类对象访问内部类成员
    6. 不能通过内部类对象访问外部类成员
    7. 静态内部类对象可以直接采用“外部类名.内部类名”形式创建
     OuterClass.M m = new OuterClass.M();8. 私有内部类无法通过第4条创建
      

  3.   

    代码重新帮你写了下,添加了注释,好好体会下。package com.csdn.test;class Outter
    {
    private int index = 100; class Inner
    {
    private int index = 50; void in_print()
    {
    int index = 30;
    System.out.println(index);// 30
    System.out.println(this.index);// 50
    System.out.println(Outter.this.index);// 100
    }
    } void out_print()
    {
    Inner in = new Inner();
    in.in_print();
    } Inner getA()
    {
    return new Inner();
    }
    }public class InnerClassTest
    {
    public static void main(String[] args)
    {
    // 实例化一个外部类Outter
    Outter out = new Outter();
    // 外部类实例out调用其成员方法,打印输出:30、50、100
    out.out_print();
    // 外部类实例out调用其成员方法,返回内部类实例,接着再调用内部类成员方法,打印输出:30、50、100
    out.getA().in_print();
    // 实例化一个内部类Inner的对象
    Outter.Inner in = out.new Inner();
    // 内部类实例in调用其成员方法,打印输出:30、50、100
    in.in_print();
    }
    }
      

  4.   

    如果内部类不是静态类,要想得到内部类的实例对象就必须先new一个外部类的实例对象,之后才能new一个内部类对象,调用内部类的方法,直接用内部类对象调用即可。
      

  5.   

    楼上的都说了,首先,你的那个waibu肯定不是静态内部类,如果是静态内部类的话就这样做会报错,你可以看看java基础