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();//这样做有什么作用呢?
}
}
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();//这样做有什么作用呢?
}
}
如: f.print();当然你这只是一个演示,可能没有看到好处,实际应用中,有时候还是会用到的。
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条创建
{
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();
}
}