public class Demo{
public static void main(String[]args){
//1、外部类外部访问成员内部类;
Outer out = new Outer();//建立外部类对象
Outer.Inner in = out.new Inner();//根据外部类对象建立内部类对象
in.inner_1();//内部类对象调用内部类方法
//2、外部类外部访问外部类静态成员(通过外部类类名直接调用外部类静态方法);
Outer.outer_2();
//3、外部类外部访问静态内部类;(直接new一个外部类下的内部类对象)
Outer.Inner_1 inner = new Outer.Inner_1();//不需要建立外部类对象
inner.inner_2();
inner.inner_3();
}
}
class Outer{
private int i = 1;
private int j = 2;
public void outer_1(){
System.out.println(“外部类非静态方法”);
}
public static void outer_2(){
System.out.println(“外部类静态方法”);
}
//成员内部类
class Inner{ //内部类中不能定义静态成员
private int i = 3;
private int k = 4;
public void inner_1(){
outer_2();//内部类非静态方法直接调用外部类静态方法
System.out.println(“内部类非静态方法”);
}
}
//静态内部类
static class Inner_1{
static int q = 5;
static void inner_2(){
System.out.println(“静态内部类静态方法”);
}
void inner_3(){
System.out.println(“静态内部类非静态方法”);
}
}
}