1、在外部类中使用非静态内部类:
public class OutClass{
private class InClass{
public void info(){
System.out.println("内部类的方法!");
}
}
//-外部类中调用非静态内部类方法,先创建实例
public void doInClass(){
InClass Ic=new InClass();
Ic.info();
}
public static void main(String[] args){
OutClass Oc=new OutClass();
Oc.doInClass();
//-静态方法中直接调用非静态内部类方法:
OutClass.InClass Ic;
OutClass Ocl=new OutClass();
Ic=Ocl.new InClass();
Ic.info();
//-把上面的代码可以简写
OutClass.InClass Icl=new OutClass().new InClass();
Icl.info();
}
}
运行结果:

2、外部类以外使用非静态内部类:
class Out{
//-定义一个非静态内部类,省略修饰符,说明只能在包范围以内调用该类
class In{
public void pri(){
System.out.println("这是非静态内部类中的方法");
}
}
}
public class OutInClass{
public static void main(String[] args){
//-外部类以外 调用内部类的方法
Out.In oi=new Out().new In();
oi.pri();
}
}
运行结果:

3、外部类以外使用静态内部类:
class Out{
//-创建静态内部类,省略修饰符,包内可访问
static class In{
public void info(){
System.out.println("静态内部类方法!");
}
}
}
public class OutInStaticClass{
public static void main(String[] args){
//-创建静态内部类的实例对象
Out.In oi=new Out.In();
oi.info();
}
}
运行结果:
