class OuterA
{
private String name1="hello";
private static String name2="haha";
//静态内部类,相当于一个静态成员
public static class InnerA{
public static int i=9;
public void m1()
{
// System.out.println(name1);//得出静态内部类只能访问外部类的静态成员
System.out.println(name2);
}
}
public class InnerB
{
InnerB(String name )
{
}
public void m2()
{
System.out.println(OuterA.this.name1);//在成员内部类中访问外部类的当前对象
System.out.println(name2);
System.out.println(name2);
}
}
}
作者: 奚华 时间: 2012-11-17 19:26
我补充一点(这个内容我在其他帖子也发过)
public class StaticTest {
private static String str="外部类的静态str";
private String str2="外部类的成员str";
/**
* @param args
*/
public static void main(final String[] args) {
// TODO Auto-generated method stub
class local{
//private static String str="局部内部类的static str";//编译器提示"The field str cannot be declared static;
//static fields can only be declared in static or top level types"
private String str="局部内部类的非静态str";
/*public static void sop_static()//编译器提示"The method sop_static cannot be declared static;
//static methods can only be declared in a static or top level type"
{
System.out.println(StaticTest.str);
System.out.println(str);
}*/
public void sop()
{
System.out.println(StaticTest.str);
System.out.println(str);
}
}
//查看局部内部类的情况
System.out.println("下面检验局部内部类");
new local().sop();
//查看成员内部类的情况
System.out.println("下面检验成员内部类");
new StaticTest().new Inner1().sop();
//查看静态内部类
System.out.println("下面检验静态内部类");
Inner2.sop_static();
}
/**
*
* @author Administrator
*
*/
class Inner1{
private static final String str="成员内部类的静态static变量";//如果不加final则编译器报错,报错的信息同上