静态内部类----Java
public class OutClass {
//成员变量
private static String name;
private static int num = 10;
//构造方法
public OutClass(){
}
public OutClass(String name, int num){
this.name = name;
this.num = num;
}
//成员方法
public static void methodOut(){
System.out.println("methodOut");
InnerClass ic = new InnerClass();
InnerClass.methodInner2();
}
public void methodOut2(){
InnerClass ic = new InnerClass();
System.out.println(ic.num);//20
ic.methodInner();
InnerClass.methodInner2();
}
static class InnerClass{
private String type;
private int num = 20;
//构造方法
public InnerClass(){
}
public InnerClass(String type,int num){
this.type = type;
this.num = num;
}
//成员方法
public void methodInner(){
System.out.println(name);
int num = 30;
System.out.println(num);//30
System.out.println(this.num);//20
//内部类如何访问外部类的同名成员变量
System.out.println(OutClass.num);//10
methodOut();
}
public static void methodInner2(){
}
}
}
import demo18.OutClass.InnerClass;
public class Test {
public static void main(String[] args) {
//要创建静态成员变量内部类对象,不需要先创建外部类的对象
OutClass.InnerClass ic = new OutClass.InnerClass();
//导入import demo18.OutClass.InnerClass;
InnerClass ic2 = new InnerClass();
}
}
总结:
1、静态内部类只能访问外部类的静态变量
2、静态内部类如何访问外部类的同名成员变量:OuterClass.num
3、静态内部类属于整个外部类的。创建静态内部类的对象,不需要先创建外部类的对象
4、外部类可以通过类名直接访问内部类的静态成员,访问非静态成员依旧需要先创建内部类对象。